在react js中更新本地状态对象中的状态

时间:2017-03-02 12:14:07

标签: reactjs

我想更新min&最大的州。如果我只更新min&最大,其他两个州正在变空。

constructor(props) {
  super(props);
  this.state = {
    param: {
      one: [],
      two: [],
      min: 100000,
      max: 5100000
    }
  };
}

这是我的代码。

select_price(price) {
     this.setState({ param: {min:price[0], max:price[1]}});
}

2 个答案:

答案 0 :(得分:3)

你正用新状态取代整个州。你应该做这样的事情

  select_price(price) {
     let paramState = {...this.state.param}; //works with es6 only
     paramState.min = price[0];
     paramState.max = price[1];
     this.setState({ param: paramState);
  }

根据@ markm247的编辑建议,另一种方法

  select_price(price) {
     let paramState = {...this.state.param, min:price[0],max: price[1]};
     this.setState({ param: paramState);
  }

答案 1 :(得分:0)

快速解决方法是获取整个文档,更改特定项目并设置状态:

doc = this.state.param
doc.min = price[0]
doc.max = price[1]}
this.setState({ param: doc });

不确定是否可以对$set

应用setState类型的操作