https://codesandbox.io/s/github/c-hive/basics/tree/master/react-hook-context-memo
This project showcases useState, useEffect, useContext, useMemo, memo. How and when they can be used and what are their effects.
Most notably:
- Setters and Objects from
useStatehave static references, as a re-render triggered by the parent re-renders the children but doesn't cause theiruseEffectto re-run. - Objects in the dependency array are shallow compared. They will cause
useEffectto re-run when their reference changes. This can be avoided by something likeuse-deep-compare-effect. - The context provider's value field doesn't act like a dependency array. When provided with an array, that will be created with a new reference upon every render.
useMemocan be used to counteract this. - Re-renders can be avoided via wrapping the components with
React.memo.