react-forceupdate
About
React hooks for force updating components. Force update from anywhere to those using a useForceUpdate hook with optional payload.
Install
npm install mittt react-forceupdate # or # yarn add mittt react-forceupdate
Usage example
Basic
import runForceUpdate useForceUpdate from 'react-forceupdate' let nonReactive = something: 'waiting...' let { return <div> nonReactivesomething </div>} let { return <div> nonReactivesomething </div>} { let { // apply non-reactive changes. nonReactivesomething = 'something updated' } return <main> <button =>Force update</button> <DeeplyNestedComponentContainingComponent1 /> <DeeplyNestedComponentContainingComponent2 /> </main> }
With eventType or payload
import runForceUpdate useForceUpdate from 'react-forceupdate' let { let eventType subscribedTo payload = return <div>Alpha: payload && payloadmessage</div>} let { let eventType subscribedTo payload = return <div>Bravo: payload && payloadmessage</div>} let { let eventType subscribedTo payload = // runs on any event type return <div>Star: payload && payloadmessage</div>} { let { const payload = message: 'hi' } let { } return <main> <button =>Force update alpha</button> <button =>Force update bravo</button> <DeeplyNestedComponentContainingAlpha /> <DeeplyNestedComponentContainingBravo /> <DeeplyNestedComponentContainingStar /> </main> }
Demo
- https://codesandbox.io/s/react-forceupdate-library-vb2x2
- https://codesandbox.io/s/react-forceupdate-pioue
API
useForceUpdate
import useForceUpdate from 'react-forceupdate' { // re-render this component on 'default' event // same as useForceUpdate('default') // re-render this component on this event // re-render this component on this event with received payload let payload = return <div>component payloadmessage</div>}
runForceUpdate
import runForceUpdate from 'react-forceupdate' { let { // same as runForceUpdate('default') } let { } let { } return <div> <button =>re-render receiver components</button> <button => re-render alpha receiver components </button> <button => re-render bravo receiver components with provided payload </button> </div> }