如何解决useEffect中缺少的依赖关系?

时间:2020-07-24 07:37:36

标签: reactjs react-hooks

目标是重置一个值,如果属性已更改为与当前值不同的值,则该值会在函数内部变异。

我正在尝试做出反应,但仍然不确定如何解决以及是否可以解决。 虽然这似乎按预期工作,但我收到了ESlint警告:

Warning:(62, 8) ESLint: React Hook useEffect has a missing dependency: 'value'. Either include it or 
remove the dependency array. (react-hooks/exhaustive-deps)


function (info) {
  const initialValue = info.value;
  const [value, set_value] = useState(initialValue);

  useEffect(() => {
    if (initialValue !== value) {
        set_value(initialValue);
    }
  }, [initialValue]);
  ...};

我无法将value变量添加到依赖项数组中,因为它将防止突变。

我在这里检查了react-hooks文档和该线程: https://github.com/facebook/react/issues/15865

但是我仍然不确定如何将这些知识应用于我的案子。

1 个答案:

答案 0 :(得分:2)

value范围内不需要useEffect,可以使用functional updates

function App({ value: initialValue }) {
  const [value, set_value] = useState(initialValue);

  useEffect(() => {
    set_value((prevValue) =>
      initialValue !== prevValue ? initialValue : prevValue
    );
  }, [initialValue]);

  return <></>;
}