Javascript 在React中使用不变性助手设置变量对象键
我有一个函数,我想写在React中。在我的类中,有一个state对象Javascript 在React中使用不变性助手设置变量对象键,javascript,json,reactjs,immutability,Javascript,Json,Reactjs,Immutability,我有一个函数,我想写在React中。在我的类中,有一个state对象fields,如下所示: this.state = { step: 1, fields: { type: '', name: '', subtype: '', team: '', agreement: '' } }; assignAttribute(field, attribute) { var temp = update(this.state.fields, {
fields
,如下所示:
this.state = {
step: 1,
fields: {
type: '',
name: '',
subtype: '',
team: '',
agreement: ''
}
};
assignAttribute(field, attribute) {
var temp = update(this.state.fields, {
field: {$set: attribute}
});
this.setState({
fields: temp
});
}
我使用immutability helper
分配这些键的各种函数通常如下所示:
assignType(attribute) {
var temp = update(this.state.fields, {
type: {$set: attribute}
});
this.setState({
fields: temp
});
}
我想做的是使用一个更通用的函数并执行以下操作:
this.state = {
step: 1,
fields: {
type: '',
name: '',
subtype: '',
team: '',
agreement: ''
}
};
assignAttribute(field, attribute) {
var temp = update(this.state.fields, {
field: {$set: attribute}
});
this.setState({
fields: temp
});
}
但是,这不起作用。使用
不变性助手使用变量键我能做什么?解决了它!我需要使用并简单地编辑assignAttribute
:
assignAttribute(field, attribute) {
var temp = update(this.state.fields, {
[field]: {$set: attribute}
});
this.setState({
fields: temp
});
}
如果有动态字段名,则可以使用[]
语法:
var data = {}
data[field] = {$set: attribute}
var temp = update(this.state.fields, data)
这真是太好了。真是个好发现。不知道此ES6功能。关于更笨拙的“老办法”,请参见另一个答案。