useEffect runs after render and handles side effects.
| Dependency Array | When it runs |
|---|---|
| No array | After every render |
[] | Once, after first render |
[a, b] | When a or b changes |
jsxuseEffect(() => { // side effect return () => { // cleanup (runs before re-run or unmount) }; }, [dependencies]);