0

我确定我对此有错误的理解。我有以下组件

const Comp = () => {
    const filter = 'a';

    useEffect(() => {
      console.log('executing effect');
      loadFriends();
    }, [filter]);


    return (
      <Div>
        {friendsFilter}
      </Div>
    );
  };

现在根据我的理解,因为当组件再次渲染时,react 上的依赖列表useEffectfilter应该运行效果?但是它似乎运行它。我在这里理解有什么问题吗?

4

2 回答 2

0

如果您只希望它运行一次,请使用空数组作为依赖项值而不是“[过滤器]”。

于 2020-02-03T04:07:33.103 回答
0

好吧,我已经测试了你的用例,但它没有调用 useEffect 块。

这是我测试过的代码。

import React, { useEffect, useState } from "react";

const Comp = () => {
  const [count, setCount] = useState(0);
  const filter = "a";

  useEffect(() => {
    console.log("executing effect");
    //loadFriends();
  }, [filter]);

  return (
    <div>
      Div
      <button onClick={() => setCount(count + 1)}> Click me</button>
      Count: {count}
    </div>
  );
};

export default Comp;

链接到代码和框 即使更改了组件重新渲染的计数,但不会调用 useEffect 块。

很可能发生了一些事情loadFriends()正在改变过滤器的值。

在此处阅读有关 useEffect 的更多信息

于 2020-02-03T04:16:05.453 回答