我认为useEffect
钩子在每次渲染后运行,如果提供了一个空的依赖数组:
useEffect(() => {
performSideEffect();
}, []);
但是这和下面的有什么区别呢?
useEffect(() => {
performSideEffect();
});
注意[]
结尾的缺失。linter 插件不会发出警告。
我认为useEffect
钩子在每次渲染后运行,如果提供了一个空的依赖数组:
useEffect(() => {
performSideEffect();
}, []);
但是这和下面的有什么区别呢?
useEffect(() => {
performSideEffect();
});
注意[]
结尾的缺失。linter 插件不会发出警告。
不完全一样。
给它一个空数组就像componentDidMount
在,它只运行一次。
不给它第二个参数同时充当componentDidMount
and componentDidUpdate
,因为它首先在 mount 上运行,然后在每次重新渲染时运行。
给它一个数组作为第二个参数,其中包含任何值,例如, [variable1]
只会useEffect
在挂载时执行一次钩子内的代码,以及每当该特定变量 (variable1) 更改时。
您可以在https://reactjs.org/docs/hooks-effect.html上阅读有关第二个参数的更多信息以及有关钩子如何在官方文档上实际工作的更多信息
只是补充@bamtheboozle's
回答。
如果您从您的 useEffect
useEffect(() => {
performSideEffect();
return cleanUpFunction;
}, []);
它将在每次useEffect
代码运行之前运行,以清理之前的 useEffect 运行。(除了第一次 useEffect 运行)