Necesita cambiar isClicked al hacer clic como un interruptor a !isClicked . Representa estilos JSX para hacer clic en un botón.
Mis datos:
const [isApply, setIsApply] = useState([ { "0": { "isClicked": false, "isExpand": false, "uni": "NSBM" } }, { "1": { "isClicked": false, "isExpand": false, "uni": "NSBM" } }, { "2": { "isClicked": false, "isExpand": false, "uni": "SLIIT" } }, { "3": { "isClicked": false, "isExpand": false, "uni": "SLIIT ACADEMY" } }, { "4": { "isClicked": false, "isExpand": false, "uni": "NIBM" } }, { "5": { "isClicked": false, "isExpand": false, "uni": "NIBM" } } ]) const apply = (e) => { console.log("clicked button id: ", e.currentTarget.id); console.log(isApply); setIsApply(...) };Necesita cambiar isClicked al hacer clic como un conmutador (!isClicked). Representa estilos jsx para un clic de botón. Debido a que es un objeto anidado y las claves de objeto se generan con ID de clic de botón, hace que sea más difícil establecer el estado de isClicked necesita ayuda
Creo que estás haciendo algo mal al esparcir el objeto. Tienes que considerar la dispersión de objetos .
Cuando se propaga un objeto, la ubicación del operador de propagación podría afectar la acción que está realizando.
✗ Incorrecto
{ isClicked: !state[key]?.isClicked, ...state[key] } Aquí, incluso si está actualizando el valor isClicked , no tiene efecto en el objeto porque, dado que está agregando ...state[key] después de actualizar el valor isClicked . Reemplaza el objeto original por sí mismo.
✔ Correcto
{ ...state[key], isClicked: !state[key]?.isClicked } Aquí coloca su estado actual agregando ...state[key] y luego actualizando el valor isClicked de ese objeto en particular.