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

64
Visualizações
Acceda al valor clave del objeto de estado anterior useState

Busqué sobre el desbordamiento de la pila pero no encontré ninguno similar (simplemente reemplace un valor clave de objeto sin usar el valor anterior).

Considere un gráfico declarado con useState

 const [graphBounds, setGraphBounds] = useState(graphBoundsInitialValue);

Dónde

 const graphBoundsInitialValue = { left: Number.MAX_SAFE_INTEGER, right: 0, top: 0, bottom: Number.MAX_SAFE_INTEGER };

Izquierda y derecha son para el eje X e inferior y superior son para el eje Y respectivamente.

Puedo tener 1 o más gráficos y para todos ellos necesito obtener el mínimo X, el mínimo Y, el máximo X, el máximo Y para mostrarlos correctamente

Necesito cambiar uno de los parámetros de graphBounds de acuerdo con el nuevo valor del servidor almacenado en la variable del graph y en función del valor anterior de ese parámetro.

Intenté muchas cosas como

 setGraphBounds(prev => ({...prev, top : prev.top > graph.maxY ? prev.top : graph.maxY}));

El problema es que intellijIdea se queja de ese código y no me deja. Probé [] corchetes y así sucesivamente, pero sin suerte.

He terminado algo como esto:

 const updatedTop = graphBounds.top > graph.maxY ? graphBounds.top : graph.maxY; let updatedBottom = graphBounds.bottom < graph.minY ? graphBounds.bottom : graph.minY || 0; // bottom domain always above zero updatedBottom = updatedBottom > 0 ? updatedBottom : 0; const updatedLeft = graphBounds.left < graph.minX ? graphBounds.left : graph.minX; const updatedRight = graphBounds.right > graph.maxX ? graphBounds.right : graph.maxX; setGraphBounds({top: updatedTop, bottom: updatedBottom, left: updatedLeft, right: updatedRight});

Este código siempre se ejecuta cuando llegan nuevos datos y compara el nuevo valor del gráfico con el anterior.

Todavía tengo una sensación molesta de código no optimizado.

PD

PERO si me atrevo a hacerlo, seguirá siendo 4 llamadas no optimizadas (sí, en un lote, pero lo que sea) como

para izquierda: setGraphBounds(prev => ({...prev, left : prev.left > graph.minX ...

por la derecha: setGraphBounds(prev ...

para arriba: setGraphBounds(prev...

para abajo: setGraphBounds(prev...

Cualquier sugerencia es apreciada. Gracias por adelantado

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

0

Puede enfrentar algunos problemas porque no está accediendo al estado actual graphBounds , ejemplo aquí:

 const updatedTop = graphBounds.top > graph.maxY ? graphBounds.top : graph.maxY;

El valor de graphBounds no siempre es el valor actual.

Al usar la devolución de llamada en lugar del objeto, tendrá acceso a la última versión de su estado graphBounds :

 setGraphBounds((graphBounds) => { const updatedTop = graphBounds.top > graph.maxY ? graphBounds.top : graph.maxY; const updatedBottom = graphBounds.bottom < graph.minY ? graphBounds.bottom : graph.minY || 0; // bottom domain always above zero updatedBottom = updatedBottom > 0 ? updatedBottom : 0; const updatedLeft = graphBounds.left < graph.minX ? graphBounds.left : graph.minX; const updatedRight = graphBounds.right > graph.maxX ? graphBounds.right : graph.maxX; return { top: updatedTop, bottom: updatedBottom, left: updatedLeft, right: updatedRight, }; });
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