Custom hook to include a callback function for useState.
Custom hook to include a callback function for useState which was previously available for setState in class components. Read more about it here.
npm install use-state-with-callback
useStateWithCallback:
import React from 'react';import useStateWithCallback from 'use-state-with-callback';
// Note: cannot be used on the server-side (e.g. Next.js) // import { useStateWithCallbackInstant } from 'use-state-with-callback';
const App = () => { const [count, setCount] = useStateWithCallback(0, count => { if (count > 1) { console.log('render, then callback.'); console.log('otherwise use useStateWithCallbackInstant()'); } });
// const [count, setCount] = useStateWithCallbackInstant(0, count => { // if (count > 1) { // console.log('render with instant callback.'); // } // });
const handleClick = () => { setCount(count + 1); };
return (
{count}<button type="button" onclick="{handleClick}"> Increase </button> </div>
); };
useStateWithCallbackLazy:
import React from 'react'; import { useStateWithCallbackLazy } from 'use-state-with-callback';const App = () => { const [count, setCount] = useStateWithCallbackLazy(0);
const handleClick = () => { setCount(count + 1, (currentCount) => { if (currentCount > 1) { console.log('Threshold of over 1 reached.'); } else { console.log('No threshold reached.'); } }); };
return (
{count}
<button type="button" onclick="{handleClick}"> Increase </button> </div>
); };
export default App;
git clone [email protected]:the-road-to-learn-react/use-state-with-callback.git
cd use-state-with-callback
npm install
npm run test