EDITAR: este es un duplicado, mira aquí
No puedo encontrar ningún ejemplo del uso de un nombre de clave dinámica al configurar el estado. Esto es lo que quiero hacer:
inputChangeHandler : function (event) {
this.setState( { event.target.id : event.target.value } );
},
donde event.target.id se usa como clave de estado para actualizar. ¿No es esto posible en React?
Respuestas:
Gracias a la pista de @ Cory, usé esto:
Si usa ES6 o el transpilador de Babel para transformar su código JSX, también puede lograr esto con nombres de propiedades calculados :
fuente
computed property names
trad
, esto es lo que estaba buscando para evitar la duplicación de código para la<Radio />
implementación.this.setState({ [event.target.id]: event.target.value });
¿cómo accedería a ese estado utilizandothis.state......
?Cuando necesite manejar múltiples elementos de entrada controlados, puede agregar un atributo de nombre a cada elemento y dejar que la función del controlador elija qué hacer en función del valor de event.target.name.
Por ejemplo:
fuente
this.state([event.target.name])
?Cómo logré esto ...
fuente
this.forceUpdate();
que no debería haber sido el caso con la última React. ¡Veamos cuál es el problema más tarde!Solo quería agregar, que también puede usar la desestructuración para refactorizar el código y hacer que se vea más ordenado.
fuente
En sintonía con un
.map
trabajo como este:Tenga
[]
en cuenta eltype
parámetro in . Espero que esto ayude :)fuente
Tuve un problema similar.
Quería establecer el estado de dónde se almacenaba la clave de segundo nivel en una variable.
p.ej
this.setState({permissions[perm.code]: e.target.checked})
Sin embargo, esta no es una sintaxis válida.
Usé el siguiente código para lograr esto:
fuente
Con ES6 + puedes simplemente hacer [
${variable}
]fuente
Estaba buscando una solución bonita y simple y encontré esto:
Espero que esto ayude
fuente
Por favor, tenga en cuenta el carácter de la cita.
fuente
Su estado con el diccionario actualiza alguna clave sin perder otro valor
La solución está debajo
aquí actualice el valor para la "página" clave con el valor 5
fuente
Puede usar una sintaxis extendida, algo como esto:
fuente