es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualización de estado de objetos en un arreglo.

Basándonos en el siguiente código, setCaptured solo se actualiza para un objeto a la vez. Por ejemplo, hago clic en Bulbasaur y capturedPkm contendrá Bulbasaur, pero luego hago clic en Ivisaur y capturedPkm contendrá solo Ivisaur y no también Bulbasaur. ¿Cómo puedo hacer para que capturedPkm reciba todos los Pokémon que he capturado? ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para que capturedPkm reciba todos los Pokemons que han sido capturados, se puede actualizar la función toggleCaptured. En lugar de actualizar el estado captured con un solo objeto, se puede actualizar como una matriz. Luego, se puede agregar cada objeto Pokemon capturado a la matriz de estado capturedPkm.

    Aquí está la función toggleCaptured modificada:

    const toggleCaptured = (checked, id) => {
      const currentChecked = { ...captured };
    
      if (checked) {
        currentChecked[pokemonCard.name] = true;
        // actualizar el estado capturePkm con el Pokemon capturado
        setCapturedPkm([...capturedPkm, currentChecked]);
      } else {
        // eliminar el Pokemon capturado de la matriz de estado capturedPkm
        setCapturedPkm(capturedPkm.filter(pkm => pkm !== currentChecked));
        delete currentChecked[pokemonCard.name];
      }
    
      setCaptured(currentChecked);
    
      console.log('captured', capturedPkm);
    }
    

    En lugar de mutar directamente los estados capturedPkm y notCapturedPkm, se pueden utilizar las funciones setCapturedPkm y setNotCapturedPkm para actualizar los estados.

    ¡Espero que esto ayude!

Comments are closed.