如果我有属性的名称,是否有更简单的更新状态的方法?比这更简单的东西:
function thingChanged(name, value) {
var x = {};
x[name] = value;
this.setState(x)
}
答案 0 :(得分:3)
使用当前的ECMAScript版本无法进一步减少代码。也许使用ES6可能会有所改变,具体取决于语言的功能。
但是,如果您担心代码冗余,可以将该方法添加到混合中,并在需要的所有组件中引用它。
更新:感谢@FakeRainBrigand提供允许代码缩减的ES6语法:setState({[name]: value});
答案 1 :(得分:2)
它并不完全短,但这应该有效:
function thingChanged(name, value) {
this.setState(Object.defineProperty({}, name, {value:value}))
}
答案 2 :(得分:2)
ES6短片:
this.setState({...x});
this.setState({ x });
答案 3 :(得分:0)
如果您使用thingChanged
函数进行双向数据绑定,LinkedStateMixin将帮助您使用更少的代码执行此操作。