In the next section, we will go through a number of techniques, tools, and libraries that we can apply to our code base to monitor and improve performance.
Immutability
The new React Hooks, such as React.memo, use a shallow comparison method against the props, which means that if we pass an object as a prop and we mutate one of its values, we do not get the expected behavior.
In fact, a shallow comparison cannot find mutation on the properties and the components never get re-rendered, except when the object itself changes. One way to solve this issue is by using immutable data, data that, once it gets created, cannot be mutated.
For example, we can set the state in the following mode:
const [state, setState] = useState({})
const obj = state.obj
obj.foo = 'bar'
setState({ obj })
Even if the value of the foo attribute of the object is changed, the reference to the object is still the same and the shallow comparison does not recognize it.
What we can do instead...