在 React 中,这些 useEffect 有什么区别?
In React, what is the difference these useEffect?
useEffect(() => {
return () =>
setTimeout(() => set_current_focus(index_map[comp_index]), 1000);
}, [comp_index]);
和
useEffect(() => {
return setTimeout(() => set_current_focus(index_map[comp_index]), 1000);
}, [comp_index]);
根据我的测试,没有区别。
有人可以确认吗?
两个 useEffect
片段都不正确。
传递给 useEffect
的回调返回的值应该是一个用于清理事物的函数(比如在你的情况下清除超时)。
所以正确的用法是这样的:
useEffect(() => {
const timeout = setTimeout(
() => set_current_focus(index_map[comp_index]),
1000
);
return () => clearTimeout(timeout);
}, [comp_index]);
useEffect(() => {
return () =>
setTimeout(() => set_current_focus(index_map[comp_index]), 1000);
}, [comp_index]);
和
useEffect(() => {
return setTimeout(() => set_current_focus(index_map[comp_index]), 1000);
}, [comp_index]);
根据我的测试,没有区别。
有人可以确认吗?
两个 useEffect
片段都不正确。
传递给 useEffect
的回调返回的值应该是一个用于清理事物的函数(比如在你的情况下清除超时)。
所以正确的用法是这样的:
useEffect(() => {
const timeout = setTimeout(
() => set_current_focus(index_map[comp_index]),
1000
);
return () => clearTimeout(timeout);
}, [comp_index]);