簡體   English   中英

Meteor 方法調用陷入無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM