reactjs - useEffect 中的无限循环,useEffect 中的 async/await
问题描述
我知道这个问题被问了很多 - 但我需要一些帮助!
我想getExistingCards()
执行和setCards
之前 updateActivity()
。
getExistingCards()
如果1) 卡片存在,并且 2)是一个空数组(setCards
如果已经设置为,我不想将 setCards设置为!)cards
existingCards
cards
existingCards
下面的工作完美,所以这不应该改变。
const [cards, setCards] = useState([]);
useEffect(() => {
updateActivity(path, cards);
}, [cards]);
在下面添加getExistingCards()
会导致无限循环(这是有道理的,因为我知道我在效果中设置状态,并且卡片也在依赖数组中):
// useLayoutEffect executes before useEffect
useLayoutEffect(() => {
const getExistingCards = () => {
if (activity) {
if (path.field === "activity_milestones" || path.field === "activity_indicators") {
let existingItems = activity[path.field]
if (existingItems) {
setCards(existingItems);
}
}
}
};
getExistingCards();
}, []);
useEffect(() => {
updateActivity(path, cards);
}, [cards]);
我还尝试将两者都添加updateActivity()
到getExistingCards()
实现useEffect
async/await 中,但实现getExistingCards()
实际上并不是一个承诺。
任何见解将不胜感激 - 谢谢
解决方案
只需在执行嵌入式功能之前检查卡片的长度
useEffect(() => {
if (cards.length === 0) updateActivity(path, cards);
}, [cards]);
推荐阅读
- bundle-install - 找不到 json-2.3.0
- c# - 使用 TabControl 时 SciChart CompositeAnnotation 消失
- jquery - 为什么 ajax 结果,导致 mvc 视图中未定义的值?
- sql-server - SQL 连接中的突然峰值导致超时
- python - 在数组中的字段上使用 Eve 和 MongoDB 进行全文搜索?
- python - Requests ChunkedEncodingError
- c++ - 在共享内存中移动 boost::interprocess::string
- python - datetime ISO 周表示一年中的第一天和最后一天都在同一周
- python - Flask, Right way to delete record and related files/images
- html - How do I center my embedded youtube iframe?