简体   繁体   English

错误:重新渲染过多。 因为我改变了 setState

[英]Error: Too many re-renders. because i changed setState

error: Too many re-renders.错误:重新渲染太多。
explaining code: (解释代码:(
iam maping array of object - in that mapping funtion i maked new array of objects( raiting = [..rating, {}] ) then set useState state to be that array of objects ( setRatingFinal([...rating]) ) and then final i display that - but iam getting error. object 的 iam 映射数组 - 在该映射函数中,我创建了新的对象数组( raiting = [..rating, {}] )然后将 useState state 设置为该对象数组( setRatingFinal([...rating]) )和然后最后我显示 - 但我收到错误。
) )
Can somebody write me answer for this, if its posible to write code in answer.如果可以在答案中编写代码,有人可以给我写答案吗? Thanks.谢谢。

var [ratingFinal, setRatingFinal] = useState([])
var rating = []

movies.map((movie, i) => {
  rating =  [...rating, {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}];
});

setRatingFinal([...rating])   **//because of this is error**


  return (
    <div>
      {ratingFinal.map((movie, i) => {
        <div key={i}>{movie.value}</div>
      })}
    </div>
  );
}

export default App;

the movies is array of 3021 objects - example of one object in that array -电影是 3021 个对象的数组 - 该数组中一个 object 的示例 -

{"IMDB Rating": 6.3, "IMDB Votes": 365}

i tryed without var rating just with ratingFinal , but and that dont work- like this:我尝试不使用var rating仅使用ratingFinal ,但是那不起作用-像这样:

 var [ratingFinal, setRatingFinal] = useState([])
    
    movies.map((movie, i) => {
      setRatingFinal([...ratingFinal, {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}]);
    });
    
      return (
        <div>
          {ratingFinal.map((movie, i) => {
            <div key={i}>{movie.value}</div>
          })}
        </div>
      );
    }
    
    export default App;

You are using the .map() method incorrectly - if you'd like to keep the syntax use .forEach() .您错误地使用了.map()方法 - 如果您想保留语法,请使用.forEach()

Map returns a new array so the usage is: Map 返回一个新数组,所以用法是:

const rating = test.map((movie, i) => { 
  return {index: i, value: movie["IMDB Votes"] * movie["IMDB Rating"]}
});

setRatingFinal(rating)

make timeout and move setRatingFinal([...rating]) in timeout minimum 100ms, and you must make one objec with value because in first render it will not show (it can't read property of undefined)使超时并在超时最小 100 毫秒内移动setRatingFinal([...rating]) ,并且您必须创建一个具有值的对象,因为在第一次渲染时它不会显示(它无法读取未定义的属性)

 var [ratingFinal, setRatingFinal] = useState([{value: 'something'}])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:重新渲染过多。 React 限制渲染次数 - Error: Too many re-renders. React limits the number of renders 我有一个错误:重新渲染太多。 React 限制渲染次数以防止无限循环 - I have an error: Too many re-renders. React limits the number of renders to prevent an infinite loop 太多的重新渲染。 在 React Native 中 - Too many re-renders. in React Native 为什么我会收到错误:重新渲染太多。 React 限制渲染次数以防止无限循环 - why do i get Error: Too many re-renders. React limits the number of renders to prevent an infinite loop 未捕获的错误:重新渲染太多。 React 限制渲染次数以防止无限循环。 错误 - Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. error 服务器错误错误:重新渲染太多。 React 限制渲染次数以防止无限循环 - Server Error Error: Too many re-renders. React limits the number of renders to prevent an infinite loop 太多的重新渲染。 React 限制渲染的数量 - Too many re-renders. React limits the number of renders 错误太多重新渲染。 react 限制渲染次数以防止无限循环 - error too many re-renders. react limits the number of renders to prevent an infinite loop "<i>Uncaught Error: Too many re-renders.<\/i>未捕获的错误:重新渲染过多。<\/b> <i>React limits the number of renders to prevent an infinite loop - ProtectedRoutes Component<\/i> React 限制渲染次数以防止无限循环 - ProtectedRoutes 组件<\/b>" - Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop - ProtectedRoutes Component 错误:重新渲染过多。 React 限制渲染次数以防止无限循环。 反应 - Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. React
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM