React optimization: useMemo() , React.memo() & useCallback()
Mohamed Adel
Posted on October 19, 2022
Memo & useCallback
Best performance and optimization training
Before optimization
Making enviroment with the issue of all components re-rendering
Understanding how react works and re-evaluation : re-running everything again in react except states declaring.
-
Difference between re-run/re-evaluate & re-render
- re-evaluate should work every time and compare
- re-render works on change only with calling react-dom
- All react components will re-rerun (not re-render) everytime if we didn't use any optimization
Optimization methods
It's a trial to make re-run/re-evaluate works like re-render on changes only
- React.memo()
it saves the component states and props to get checked first before the re-run
-
It caches the props and states of the components so using it alot in useless way will make it caching a lot so it will be heavy on runtime.
import React from "react"
const Component=(props)=>{
//some javascript
return (
//some jsx
)
}
export default React.memo(Component)
- useMemo()
-
difference between reference types in Js
let name = "adel" let name2 = "adel" //name === name2 --> true let obj = {name:"adel"} let obj2 = {name:"adel"} //obj === obj2 --> false //objects on different refrences values let obj3 = obj //passing by refrence //obj === obj3 --> true
- Primitive type
- Refrence type : Object, array & function
-
useMemo is used with arrays, objects & with functions that returns something to fix the problem in re-decleration with every re-reun
const obj = useMemo(()=>{ return name: "adel" }, [])
useMemo prevents object re-declaration with new refrence on re-run
- useCallback()
- useCallback() prevents function (with no return) from re-declaration with new refrence on re-rerun
//this won't work it will be re-declared with new refrence every re-run
const addAge = () => {
//function logic with no return
}
//solution
const addAge = useCallback(() => {
//function logic
}, [])
return <Component addAge={addAge} />
- useCallback caches the logic itself not a return value like useMemo
Posted on October 19, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 6, 2024