[React] React Hooks
useEffect
function Test({ name, children = null }) {
console.log("children", children);
useEffect(() => {
console.log(`${name} effect`);
return () => {
console.log(`${name} cleanup`);
};
});
return children;
}
function App() {
return (
<Test name="parent">
<Test name="child">123</Test>
</Test>
);
}
結果:https://codesandbox.io/s/boring-lena-9d2fnj
child 執行兩次因為在 dev 的 strict mode dev strict mode
useEffect cleanup function
React performs the cleanup when the dependencies to that hook changes and the effect hook needs to run again with new values.
useDidMount
const useDidMount = () => {
const isFirst = useRef(true);
if (isFirst.current) {
isFirst.current = false;
return true;
}
return isFirst.current;
};
export default useDidMount;
Resources: