Error: Too many re-renders , when modifying an array

Error: Too many re-renders , when modifying an array

通过大量迭代修改数组时出错。

 data.logData1[0].data.map((values, index) => {
    var result = {};
    data.logData1[0].mnemonicList
      .split(",")
      .forEach((key, i) => (result[key] = values.split(",").map(Number)[i]));

    setGraphData([...graphData, result]); //Modifying Array (here comes trouble)

  });

很难说没有代码组件,但我怀疑问题在于你在函数组件体内立即调用你的状态 setter,这迫使 React 重新调用你的函数再次,使用相同的道具,最终再次调用状态 setter,这会触发 React 再次调用您的函数....等等。

const resultData =  data.logData1[0].data.map((values, index) => {
    var result = {};
    data.logData1[0].mnemonicList
      .split(",")
      .forEach((key, i) => (result[key] = values.split(",").map(Number)[i]));

   return result

  });

// somewhere in your useEffect or in function

 setGraphData([...graphData, resultData]); 

解决方法是创建一个临时变量并使用它存储循环的结果,当循环完成时,您可以将 setGraphData 设置为最终结果

    const tempVar = []
    data.logData1[0].data.map((values, index) => {
    var result = {};
    data.logData1[0].mnemonicList
      .split(",")
      .forEach((key, i) => (result[key] = values.split(",").map(Number)[i]));
      tempVar.push(result) //storing results to temporary array
  });
   setGraphData(tempVar); //setting the final result of the loop to graphData