A useState performance tip you may not have known
Omer Davidson
Posted on October 29, 2024
Let's say we have a react component with a useState inside it.
const expensiveCalculation = () => {
// ...
}
export default function AboutPage() {
const [state, setState] = useState(expensiveCalculation())
return (
// ...
);
}
We initiate the state with the result of the expensiveCalculation
function.
Every time the component re-renders, the function expensiveCalculation
will run even though we only need it's result as the initial value of useState. The function's result will not be used.
To avoid the expensive calculation during re-renders, pass the function itself without calling it. react is smart enough to invoke the function itself on mount and not every render.
const expensiveCalculation = () => {
// ...
}
export default function AboutPage() {
const [state, setState] = useState(expensiveCalculation)
return (
// ...
);
}
💖 💪 🙅 🚩
Omer Davidson
Posted on October 29, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.