UNPKG

kitchensink

Version:

Dispatch's awesome components and style guide

43 lines (38 loc) 1.25 kB
function traverseRenderedChildren(internalInstance, callback, argument) { callback(internalInstance, argument); if (internalInstance._renderedComponent) { traverseRenderedChildren( internalInstance._renderedComponent, callback, argument ); } else { for (let key in internalInstance._renderedChildren) { if (internalInstance._renderedChildren.hasOwnProperty(key)) { traverseRenderedChildren( internalInstance._renderedChildren[key], callback, argument ); } } } } function setPendingForceUpdate(internalInstance) { if (internalInstance._pendingForceUpdate === false) { internalInstance._pendingForceUpdate = true; } } function forceUpdateIfPending(internalInstance, React) { if (internalInstance._pendingForceUpdate === true) { const publicInstance = internalInstance._instance; React.Component.prototype.forceUpdate.call(publicInstance); } } export default function getForceUpdate(React) { return instance => { const internalInstance = instance._reactInternalInstance; traverseRenderedChildren(internalInstance, setPendingForceUpdate); traverseRenderedChildren(internalInstance, forceUpdateIfPending, React); }; }