在 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]);