He definido un objeto de la siguiente manera en un archivo:
export const items = { first: false, second: false, third: false }Lo estoy usando en un componente de la siguiente manera:
import { items } from 'file'; const [elements, setElements] = useState(items); Tengo un método que se llama cuando se hace clic en un botón; el método debería cambiar todos los valores de los elements a true
El uso de lo siguiente cambia los valores pero no activa una nueva representación del componente (que es lo que necesito)
Object.keys(elements).forEach(element => elements[element] = true); ¿Cómo puedo usar setElements para actualizar todos los valores en los elements ?
El problema al que te enfrentas es que estás mutando el objeto de estado, lo que significa que al final, prevState === nextState y React se salen de la representación. Una opción es usar un nuevo objeto y copiar los accesorios de esta manera, usando la misma combinación de Object.keys y forEach pero agregando un paso adicional:
setState(prevState => { const nextState = {} Object.keys(prevState).forEach(key => { nextState[key] = true }) return nextState })