![](/img/trans.png)
[英]How do I update state but not trigger the infinite useEffect loop?
[英]React - How to update the state in useEffect without causing an infinite loop?
我正在尝试按优先级对我的 object 进行排序,但是它得到关于项目也应该在依赖数组中的依赖错误。 但是,如果我把它放在那里,那么它就是永无止境的循环。 如何在保留整个功能的情况下使错误消失?
useEffect(() => {
const sortItems = () => {
const res = items.sort((a, b) => (priority > priority ? 1 : -1));
setItems(res);
};
if (sortedProperty) {
sortItems();
}
}, [sortedProperty]);
永无止境的循环是因为将items
添加到依赖项将触发useEffect
每当调用setItems
时发生的items
更改。
这可以通过使用功能 state 更新轻松解决:
useEffect(() => {
const sortItems = (itemsArr) => {
// maybe these should be a.priority, b.priority
return itemsArr.sort((a, b) => (priority > priority ? 1 : -1));
};
if (sortedProperty) {
// updating state by passing a callback
setItems(previousItems => sortItems(previousItems));
}
}, [sortedProperty]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.