Reactjs 反应useEffect,依赖项列表不工作
我相信我对这件事的理解是错误的。我有以下组件Reactjs 反应useEffect,依赖项列表不工作,reactjs,react-hooks,use-effect,react-effects,Reactjs,React Hooks,Use Effect,React Effects,我相信我对这件事的理解是错误的。我有以下组件 const Comp = () => { const filter = 'a'; useEffect(() => { console.log('executing effect'); loadFriends(); }, [filter]); return ( <Div> {friendsFilter} </Div>
const Comp = () => {
const filter = 'a';
useEffect(() => {
console.log('executing effect');
loadFriends();
}, [filter]);
return (
<Div>
{friendsFilter}
</Div>
);
};
const Comp=()=>{
常量过滤器='a';
useffect(()=>{
console.log(“执行效果”);
loadFriends();
},[filter]);
返回(
{friendsFilter}
);
};
现在根据我的理解,既然
useffect
上的依赖项列表是filter
react,那么当组件再次渲染时,它不应该运行效果?然而,它似乎在运行它。我理解这里有什么错误吗?如果您只希望它运行一次,请使用空数组作为依赖项值,而不是“[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;
import React,{useffect,useState}来自“React”;
常数Comp=()=>{
const[count,setCount]=useState(0);
const filter=“a”;
useffect(()=>{
console.log(“执行效果”);
//loadFriends();
},[filter]);
返回(
Div
设置计数(计数+1)}>单击我
计数:{Count}
);
};
导出默认Comp;
即使更改计数,组件也会重新渲染,但不会调用useEffect块
很可能在loadFriends()
中发生了一些事情,它正在更改筛选器的值
使用componentDidMount()重新渲染我不想使用componentDidMount或重新渲染。我想问,为什么它在
过滤器
值未更改的情况下仍会运行此效果?这里肯定还有其他原因,我确信这是精简的代码,您能提供一个更详细的示例吗?您的loadFriends()在做什么?你能发布完整的代码吗?分享loadFriends()块的代码。可能是它改变了过滤器的值。谢谢你,即使loadFriends
改变了什么,因为filter
是硬编码的,useffect不应该只运行一次吗?如果你能在loadFriends
中共享代码,我可以给你一个更好的答案。因为上面的代码在没有loadFriends
的情况下工作得非常好。