2017-03-02 73 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()也不起作用 –