J'ai une fonction que je veux écrire dans React. Dans ma classe, j'ai un objet d'état fields
qui ressemble à ceci:
this.state = {
step: 1,
fields: {
type: '',
name: '',
subtype: '',
team: '',
agreement: ''
}
};
J'ai différentes fonctions qui affectent ces touches à l'aide de immutability helper
qui ressemblent généralement à:
assignType(attribute) {
var temp = update(this.state.fields, {
type: {$set: attribute}
});
this.setState({
fields: temp
});
}
Ce que je voudrais comme, c'est utiliser une fonction plus générique et faire quelque chose comme ceci:
assignAttribute(field, attribute) {
var temp = update(this.state.fields, {
field: {$set: attribute}
});
this.setState({
fields: temp
});
}
Mais cela ne fonctionne pas. Que puis-je faire pour utiliser une clé de variable à l'aide de immutability-helper
?
Deviner! Je devais utiliser noms de propriétés calculés ES6 et simplement modifier assignAttribute
pour:
assignAttribute(field, attribute) {
var temp = update(this.state.fields, {
[field]: {$set: attribute}
});
this.setState({
fields: temp
});
}
Vous pouvez utiliser le []
syntaxe si vous avez des noms de champs dynamiques:
var data = {}
data[field] = {$set: attribute}
var temp = update(this.state.fields, data)
Cela devient beaucoup plus concis si vous pouvez utiliser ES6 .