Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
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.
)
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 -

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

i tryed without var rating just with ratingFinal, but and that dont work- like this:

 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;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

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)

 var [ratingFinal, setRatingFinal] = useState([{value: 'something'}])
about 4 years ago · Juan Pablo Isaza Denunciar

0

You are using the .map() method incorrectly - if you'd like to keep the syntax use .forEach().

Map returns a new array so the usage is:

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

setRatingFinal(rating)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda