EDIT: esta é uma duplicata, veja aqui
Não consigo encontrar exemplos de como usar um nome de chave dinâmica ao definir o estado. Isto é o que eu quero fazer:
inputChangeHandler : function (event) {
this.setState( { event.target.id : event.target.value } );
},
onde event.target.id é usado como a chave de estado a ser atualizada. Isso não é possível no React?
Respostas:
Graças à dica de @ Cory, usei isso:
Se você estiver usando o ES6 ou o transpiler Babel para transformar seu código JSX, também poderá fazer isso com nomes de propriedades calculados :
fonte
computed property names
trad
, é isso que eu estava procurando para evitar a duplicação de código para<Radio />
implementação.this.setState({ [event.target.id]: event.target.value });
como você acessaria esse estado usandothis.state......
?Quando você precisar manipular vários elementos de entrada controlados, poderá adicionar um atributo de nome a cada elemento e deixar a função do manipulador escolher o que fazer com base no valor de event.target.name.
Por exemplo:
fonte
this.state([event.target.name])
?Como eu consegui isso ...
fonte
this.forceUpdate();
que não deveria ter sido o caso do React mais recente. Vamos ver qual é o problema mais tarde !!Eu só queria acrescentar que você também pode usar a desestruturação para refatorar o código e torná-lo mais limpo.
fonte
Em loop com
.map
trabalhos como este:Observe o parâmetro
[]
intype
. Espero que isto ajude :)fonte
Eu tive um problema parecido.
Eu queria definir o estado em que a chave do segundo nível estava armazenada em uma variável.
por exemplo
this.setState({permissions[perm.code]: e.target.checked})
No entanto, isso não é uma sintaxe válida.
Eu usei o seguinte código para conseguir isso:
fonte
Com o ES6 +, você pode fazer [
${variable}
]fonte
Eu estava procurando uma solução bonita e simples e achei o seguinte:
Espero que isto ajude
fonte
Por favor, observe o caractere de citação.
fonte
Seu estado com o dicionário atualiza alguma chave sem perder outro valor
A solução está abaixo
aqui atualize o valor da chave "página" com o valor 5
fonte
Pode usar uma sintaxe de propagação, algo como isto:
fonte