老师,数组和对象作为依赖是不是不太好,不管这个数组和对象是不是 useState里申明的
来源:8-6 用useMemo解决依赖循环问题 - Hook的依赖问题详解

qq_沧海桑田_2
2021-05-28
3回答
-
qq_沧海桑田_2
提问者
2021-05-29
那老师,如何达成这种效果呢,当tagId和param的值相同 引用不同,useEffect里面的东西不打印呢
const [tagId, setTagId] = useState([4, 5]);
const [params, setParams] = useState({ name: "javk" });
const handleClick = () => {
const diffId = [];
[4, 5].forEach((element) => {
if (tagId.includes(element)) {
diffId.push(element);
}
});
setTagId(diffId);
setParams({ name: "javk" });
};
useEffect(() => {
console.log("params changed");
}, [params]);
useEffect(() => {
console.log("tagId changed");
}, [tagId]);
022021-05-31 -
Nolan
2021-05-28
要尽量避免,但是实际情况中不可能完全避免,很多情况下需要用useMemo来控制
012021-05-28 -
qq_沧海桑田_2
提问者
2021-05-28
老师,我业务中有这样一段逻辑 就是点击事件处理之后是个[4,5]的数组 ,这个时候会去循环和tagId里面的id做比较,然后把新的id数组给 tagId 有一种情况是 处理之后 diffId和tagId是相同的,但是 tagId change 还是会执行一次,我的预期是不执行,因为id数组是相同的, 怎么处理呢,是哪里有问题嘛 ,
00
相似问题