[英]Meteor method call runs into infinite loop
我是 Meteor 的新手,並試圖通過從數組中傳遞不同的參數來從 API 獲取數據,但它正在運行到無限循環中。 我可以看到對象一次又一次地呈現,並且值不斷變化,而不是在調用響應后將正確的值附加到對象中。
let [projectvalue, setProjectvalue] = useState({});
let projectList = ['abc','def','bbb','sss'];
projectList.map(projectName => {
useEffect(
(project = projectName) =>
Meteor.call(
'method.getValue',
{ project },
(error, resp) => {
if (error) throw new Error(error);
resp.status.map(val => {
if(val.key == "data"){
setProjectvalue({...projectvalue, [projectName] : val.actualValue })
}
})
}
),
);
});
console.log(projectvalue);
我需要從不同項目名稱的響應中獲取實際值。
編輯:
useEffect(() => {
projectList.map(project => {
Meteor.call(
'method.getValue',
{ project },
(error, resp) => {
if (error) throw new Error(error);
resp.status.map(val => {
if(val.key == "data"){
setProjectvalue({...projectvalue, [projectName] : val.actualValue })
}
})
}
)
})
}
,[projectList]);
您缺少useEffect
掛鈎的依賴項數組。 鈎子應該放在函數作用域的頂層。 不在map
方法內:
useEffect(
projectList.map(projectName => {
Meteor.call(
'method.getValue',
{ projectName },
(error, resp) => {
if (error) throw new Error(error);
resp.status.map(val => {
if(val.key == "data"){
setProjectvalue({...projectvalue, [projectName] : val.actualValue })
}
})
}
)
});
, []);
查看官方 React 文檔https://reactjs.org/docs/hooks-rules.html#only-call-hooks-at-the-top-level
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.