Estoy usando ganchos de reacción y necesito cambiar dinámicamente el gancho en función del valor i del bucle. Siento que hay una manera simple de hacerlo, pero no puedo encontrar dónde. Cualquier ayuda se agradece, gracias.
const [hanzi0, setHanzi0] = useState(0); const [hanzi1, setHanzi1] = useState(0); const [hanzi2, setHanzi2] = useState(0); const [hanzi3, setHanzi3] = useState(0); for(var i = 0; i < 4; i++) { setHanzi0(tmpData[x].hanzi); }No puede buscar dinámicamente un nombre de variable local. Simplemente no es una característica que tiene javascript.
Pero lo que puede hacer es buscar un valor en alguna estructura de datos. Como, digamos, una matriz.
const [hanzis, setHanzis] = useState([0,0,0,0])Ahora puedes actualizar ese estado así:
const newHanzis = [...hanzis] // create a shallow copy of the array for(var i = 0; i < 4; i++) { newHanzis[i] = tmpData[i].hanzi } setHanzis(newHanzis)Si necesita acceder dinámicamente a diferentes estados, entonces en realidad no tiene diferentes estados, tiene un estado que tiene suficiente complejidad para contener muchos datos.
for(var i = 0; i < 4; i++) { if(i === 0) setHanzi0(tmpData[x].hanzi0); if(i === 1) setHanzi1(tmpData[x].hanzi1); if(i === 2) setHanzi2(tmpData[x].hanzi2); if(i === 3) setHanzi3(tmpData[x].hanzi3); }