react-native:如何在react-native中设置setState()动态状态?

时间:2019-05-09 18:36:26

标签: reactjs react-native

我可以创建动态状态,例如以下示例:

constructor(props) {
    super(props);
    this.state = {};
}

使用此方法创建状态:

func(name){
   this.state[name];
}

和setState与此:

func2(name,value){
   this.setState({[name]:value});
}

所以

this.func('color');
this.func('size');

我有this.func.colorthis.func.size。对吧?

有效。

但是我想要这样的东西。我想以'names'状态创建所有新的动态状态。

constructor(props) {
        super(props);
        this.state = {names:[]};
}

names是正常状态。

func(name){
       this.state.names[name];
}

func2(name,value){
   this.setState({names:{[name]:value}:});
}

我将此功能称为:

func('color');
func('size');

func2('color','red');
func2('size','larg');

我期望console.log(this.state.names)这样:

{color:'red',size:'larg'}

但是我只得到{size:'larg'}(第二个功能)

我怎么了?

1 个答案:

答案 0 :(得分:3)

再次调用names时,您将覆盖this.setState的值。

您正在有效地做

this.setState({ names: { color: 'red' }});
this.setState({ names: { size: 'large' }});

请考虑在Object.assign()中使用func2,以确保您没有替换要向其添加属性的对象。

func2(name,value) {
    this.setState({
        names: Object.assign(this.state.names, {[name]: value})
    });
}