首页 > 解决方案 > 我应该在 useCallback 的依赖数组中包含 setState 吗?

问题描述

    const [active, setActive] = useState(false);

    const onActiveChanged = useCallback(
      isActive => () => {
        // do something
        setActive(isActive);
      },
      [setActive], // or just [] is okay?
    );

一起使用useStateand useCallback(or useMemo) 时,我应该包含setState在依赖项数组中吗?

标签: reactjsreact-hooks

解决方案


对此的建议也在React Docs-Hooks API Reference上。

setState 函数用于更新状态。它接受一个新的状态值并将组件的重新渲染排入队列。

setState(newState);

在后续重新渲染期间,useState 返回的第一个值将始终是应用更新后的最新状态。

笔记

React 保证 setState 函数标识是稳定的,并且不会在重新渲染时改变。这就是为什么从 useEffect 或 useCallback 依赖列表中省略是安全的。


推荐阅读