reactjs - 对 useEffect 的多次调用 - React

标签 reactjs react-hooks use-effect

我想仅在 productType 更改时执行 useEffect 方法中的代码, 一旦页面加载,我就可以识别出 console.log 被执行超过 6-7 次,这是我不想要的。

这是我的代码摘要:

const [productType, setProductType] = useState(null);

useEffect(() => {
  console.log(productType);
}, productType);

想法是当productType改变时执行这个useEffect中的代码, 我正在像这样的下拉菜单中更改它:

<MyDropdownComponent
  value={productType}
  onChange={e => setExportType(e.target.value)}
  width={200}
/>

所以我想知道为什么当我加载这个 View /模板时,我的控制台中出现了 6-7-8 console.logs of null ..

最佳答案

useEffect Hook 需要一个数组作为第二个参数。他们可能这样做是为了区分空数组(仅运行一次效果)和默认数组(在每次渲染上运行),如果直接使用参数,他们就无法区分空数组。

您需要传递一个像这样的数组:

useEffect(() => {
  console.log(productType);
}, [productType]);

关于reactjs - 对 useEffect 的多次调用 - React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753736/

相关文章:

javascript - 在react-js中选择和取消选择多个div

reactjs - React 路由器匹配失败

javascript - React Hooks - 如何使用使状态依赖于另一个状态?

reactjs - 在 useEffect Hook 中使用 axios 取消 token 时如何修复失败的测试

reactjs - React Maximum update depth exceeded 错误仅在测试中由useEffect引起

javascript - 在ReactJS中,如果我们不为useEffect提供依赖数组,是否会导致该函数每次都被调用?

reactjs - 当 url 中的 id 更改时如何重新渲染函数组件

javascript - DataTables - 在react中调用 'columnDefs'中的函数

javascript - React 类中的 es6 函数声明

reactjs - 在使用 exceljs 读取后,在 react-dropzone `onDrop` 中设置状态变量