2017-03-02 69 views
0

我想在状态中最大更新最小&。如果我只更新最大值,其他两个状态将变空。在反应中更新本地状态对象中的状态js

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]}}); 
} 
+0

哪里是你的代码,更新您的状态的另一种方式?你是使用'setState()'还是'replaceState()'? – Jayce444

+0

我使用setState() –

+0

你可以发布你的'setState()'命令吗? – API

回答

3

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

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

正如编辑建议,这样做

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

是的。它正在工作。非常感谢。 –

0

速战速决是让整个文档,改变具体项目和设置状态:

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

不知道,如果你可以申请一个$set一种操作与setState

+0

它处于本地状态。道具无法访问本地状态。 this.props.param.get()抛出错误: 无法读取未定义的属性'get' –

+0

用'this.state.param.get()'替换呢? – API

+0

this.state.param.get()也不起作用 –