React Hook useEffect 缺少依赖项:'props' 由于 useEffect 中有一行

Posted

技术标签:

【中文标题】React Hook useEffect 缺少依赖项:\'props\' 由于 useEffect 中有一行【英文标题】:React Hook useEffect has a missing dependency: 'props' due to one line in useEffectReact Hook useEffect 缺少依赖项:'props' 由于 useEffect 中有一行 【发布时间】:2021-12-23 09:57:09 【问题描述】:

在我的 react 应用中,有一个 useEffect。这是我的代码:

useEffect(() => 
        const trimmedArray = trimArray(props.firstInputValue);
        props.setFirstFinalSetArray(trimmedArray);
        setFirstPrintArray(`$trimmedArray.join(', ')`);
    , [props.firstInputValue]);
    此 useEffect 用于功能组件中。 trimArray 是一个函数 setFirstFinalSetArray 是一个 useState 设置函数。 setFirstPrintArray 是当前组件中的状态。 firstInputValue 是父组件中的状态。

我发现由于这一行:props.setFirstFinalSetArray(trimmedArray); 我收到此错误:React Hook useEffect has a missing dependency: 'props'. Either include it or remove the dependency array. However, 'props' will change when *any* prop changes, so the preferred fix is to destructure the 'props' object outside of the useEffect call and refer to those specific props inside useEffect react-hooks/exhaustive-deps

【问题讨论】:

您阅读警告了吗?您是否考虑过进行建议的更改? 我阅读了警告。我只是不明白这个警告是什么意思。我不确定删除该道具后该怎么做。我需要在 useeffect 中使用那个道具 【参考方案1】:

你可以像这样解构你的道具:

const MyComponent = (firstInputValue, setFirstFinalSetArray) => 
  const [firstPrintArray, setFirstPrintArray] = useState()
  useEffect(() => 
    const trimmedArray = trimArray(firstInputValue);
    setFirstFinalSetArray(trimmedArray);
    setFirstPrintArray(`$trimmedArray.join(', ')`);
  , [firstInputValue, setFirstFinalSetArray]);

  // rest of your code

当我学习 React 时,无论出于何种原因,我都犹豫是否要这样做(我想我喜欢 props),但它确实有助于编写干净的代码。

【讨论】:

以上是关于React Hook useEffect 缺少依赖项:'props' 由于 useEffect 中有一行的主要内容,如果未能解决你的问题,请参考以下文章

React Hook useEffect 缺少依赖项:'props' 由于 useEffect 中有一行

React Hook useEffect 缺少依赖项(没有在 useEffect 中移动函数)

反应 | React Hook useEffect 缺少依赖项

React Hook useEffect 缺少依赖项:'props'

React Hook useEffect 缺少依赖项

React Hook useEffect 缺少依赖项:'list'