我收集到useEffect
挂钩在每次渲染后运行,如果提供了一个空的依赖数组:
useEffect(() => {
performSideEffect();
}, []);
但是与以下内容有什么区别?
useEffect(() => {
performSideEffect();
});
请注意,最后没有[]
。 linter插件不会发出警告。
答案 0 :(得分:3)
不太一样。
给它一个空数组就像componentDidMount
一样,它只能运行一次。
给予它第二个参数不会同时充当componentDidMount
和componentDidUpdate
,因为它首先在mount上运行,然后在每次重新渲染时运行。
为它提供一个数组作为第二个参数,其中包含任何值,例如, [variable1]
只会在挂载时useEffect
钩子内执行代码,并且只要该特定变量(variable1 )更改。
答案 1 :(得分:2)
只是对 @bamtheboozle's
答案的补充。
如果您从 useEffect
useEffect(() => {
performSideEffect();
return cleanUpFunction;
}, []);
它将在每次 useEffect
代码运行之前运行,以清理之前的 useEffect 运行。 (除了第一次 useEffect 运行)