React-Native setState-来自同一变量的名称和值

时间:2019-04-12 01:34:39

标签: javascript react-native setstate

是否只能在SetState中输入一个包含名称和值的参数。请参见下面的示例。括号有问题吗?

这在同时更改许多状态时非常方便。也就是说,首先将它们准备在一个长字符串中,然后仅执行一次setState。谢谢!

this.setState({myState: "help"}) // this works of course
whatstate='myState'
this.setState({[whatstate]: "me"}) // this too
whatstate2='myState: "please"' 
this.setState(whatstate2) // but how to make this work?

2 个答案:

答案 0 :(得分:2)

// if you like to work only with strings
var whatstate = {};
whatstate['myState1'] = 'help';
whatstate['myState2'] = 'me';
whatstate['myState3'] = 'please';

// ^ this will produce an object equivalent to this
//whatstate = {
//  myState1: 'help',
//  myState2: 'me',
//  myState3: 'please'
//}

// which you can use it to 'setState'
this.setState(whatstate);

答案 1 :(得分:1)

您可以致电this.setState({ whatstate2 })来达到相同的效果。这是ES6的属性值简写。

参考:https://ariya.io/2013/02/es6-and-object-literal-property-value-shorthand

如果您想一次更新多个状态,也可以这样做。

this.setState({
    myState1 : newState1,
    myState2 : newState2
});

如果变量名与前面提到的状态名相同,则可以。

this.setState({ myState1, myState2 });