Dependency Array
RE · useEffectsyntax
useEffect(effectFn, [dep1, dep2]);
// Empty array: mount only
useEffect(effectFn, []);
// No array: every render
useEffect(effectFn);example
function SearchResults({ query, page }) {
const [results, setResults] = useState([]);
useEffect(() => {
// Runs whenever query or page changes
let cancelled = false;
async function search() {
const data = await fetchResults(query, page);
if (!cancelled) setResults(data);
}
search();
return () => { cancelled = true; };
}, [query, page]);
return <ResultsList items={results} />;
}Note React uses Object.is to compare dependencies. Objects and arrays create new references each render, so they will always trigger the effect. Extract primitive values or memoize objects before listing them as dependencies.