3

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

这是我的代码的摘要:

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

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

想法是在更改useEffect时执行代码productType,我在下拉列表中更改它,如下所示:

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

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

4

1 回答 1

2

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

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

useEffect(() => {
  console.log(productType);
}, [productType]);
于 2019-09-02T08:36:46.710 回答