Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
¿Debo almacenar el estado de un objeto grande en React?

Tengo este objeto de Game muy grande que determina por completo el estado del juego, incluidos los datos que se procesan y los datos que no se procesan. Sus valores anidados se cambian con mucha frecuencia.

¿Debo almacenar este objeto tan grande en un estado...

 const [game, setGame] = useState(new Game()) // Very large Game object

y usar setGame con cada pequeña actualización del juego? Por ejemplo,

 function playerDamage(dmg) { const nextState = game.copy(); nextState.player.health -= dmg; setGame(nextState); }

Me parece que sería extremadamente ineficiente hacer una copia de Game y usar setGame con cada pequeño cambio en Game. ¿Tengo razón en esta suposición, o React y TS/JS manejan esto bien "bajo el capó"?

Supongo que para reformular esta pregunta: ¿cuál es la mejor manera de actualizar con frecuencia los valores profundamente anidados en un objeto de estado React?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tal vez deberías probar Redux para administrar el estado y usar una tienda para administrar el estado del juego.

https://react-redux.js.org/

about 4 years ago · Juan Pablo Isaza Relatório

0

Sí, su enfoque actual bien podría ser bastante ineficiente si copia todo el objeto :

 const nextState = game.copy();

Si el game es tan grande, hacer una copia tan profunda con frecuencia podría ser un problema. Pero, para esta situación particular, hay una solución simple: no copiar todo, solo copiar los objetos que necesitan ser cambiados. Solo hay dos objetos que deben cambiarse (más el nuevo objeto de estado externo final), así que solo cámbielos, en lugar de copiar todo recursivamente.

 function playerDamage(dmg) { setGame({ ...game, player: { ...game.player, health: game.player.health - dmg } }); }

Esta versión de la función playerDamage sería bastante barata.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda