如何在JSX中的setState中使用变量

sif*_*eme 5 javascript reactjs react-jsx

我想在React的JSX文件中使用setState函数中的变量.

我将如何重构此代码:

var name = e.target.name;
if(name == "title"){
    this.setState({ title: e.target.value});
}
else if(name == "date"){
    this.setState({ date: e.target.value});
}
else if(name == "amount"){
    this.setState({ amount: e.target.value});
}
Run Code Online (Sandbox Code Playgroud)

进入这样的事情(所以我不重复自己)?

var name = e.target.name;
this.setState({ name: e.target.value});
Run Code Online (Sandbox Code Playgroud)

上面的语法只设置"name"的状态而不是"name"变量的值.

Ale*_*lan 11

简单:

var newState = {};
newState[e.target.name] = e.target.value;
this.setState(newState);
Run Code Online (Sandbox Code Playgroud)


Mic*_*ley 5

var update = {};
update[e.target.name] = e.target.value;
this.setState(update);
Run Code Online (Sandbox Code Playgroud)

如果您使用的是支持计算属性名称(如Babel)的 ES6 转译器,您可以执行以下操作:

this.setState({[e.target.name]: e.target.value});
Run Code Online (Sandbox Code Playgroud)