{ sung.codes }

by dance2die
Blog
← Go Back

Emulate forceUpdate with React Hooks

Broken Post?Let me know

Photo by freestocks.org on Unsplash

UPDATE: 2019-02-12

This post would not work any more starting v16.8.0 as pointed out by Dimitar Nestorov in the comment section.

The official React Documentation Is there something like forceUpdate? discourages use of forceUpdate.

Self note...

Today I learned you can use 2nd value in React Hooks method useState to emulate forceUpdate.

Donavon has shared a code snippet on Twitter on how to use React Hooks to emulate forceUpdate.

https://twitter.com/donavon/status/1060538400292421632

Donavon's twit on forceUpdate

Here is the copy/pastable code snippet.

import React, { useState } from 'react';
const useForceUpdate = () => useState()[1];
const App = () => {
const forceUpdate = useForceUpdate();
console.log('rendering');
return <button onClick={forceUpdate}>Click To Render</button>;
};
export default App;
view raw forceUpdate.js hosted with ❤ by GitHub

View this gist on GitHub

Edit React Hooks: useForceUpdate

Fork Donavon's code

Here is forceUpdate in action.

Question?

I still can't figure out how calling useForceUpdate is able to trigger the re-render as it is not updating any state.

Initially Donavon updated a dummy state but he found out it was unnecessary thus he isn't unsure how it's working, either.

https://twitter.com/donavon/status/1060541358681796608

More questions...

I tried to go thru the code in Chrome devtool but would require understanding React Fiber code to dig it.

Update

Asked the question in Reddit, 

https://www.reddit.com/r/reactjs/comments/9vgaso/

/r/reactjs

And /u/acemarke has kindly provided with an explanation.

https://www.reddit.com/r/reactjs/comments/9vgaso/how\_does\_2nd\_value\_in\_react\_hooks\_usestates\_able/e9by088/

Reply by /u/acemarke

https://www.reddit.com/r/reactjs/comments/9vgaso/how\_does\_2nd\_value\_in\_react\_hooks\_usestates\_able/e9c261e/

Request for confirmation by rephrase

https://www.reddit.com/r/reactjs/comments/9vgaso/how\_does\_2nd\_value\_in\_react\_hooks\_usestates\_able/e9c6c27/

Confirmation & additional remark

Articles to read