我确定我对此的理解是错误的。 我有以下组件
const Comp = () => {
const filter = 'a';
useEffect(() => {
console.log('executing effect');
loadFriends();
}, [filter]);
return (
<Div>
{friendsFilter}
</Div>
);
};
现在根据我的理解,由于对useEffect
的依赖列表filter
反应不应该在组件再次渲染时运行效果?但是它似乎运行它。 我在这里理解了什么吗?
如果只希望它运行一次,请使用空数组作为依赖项值,而不是"[filter]"。
好吧,我已经测试了您的用例,但它没有调用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()
发生了一些事情,正在更改过滤器的值。
在此处阅读有关使用效果的更多信息