2017-06-13 52 views
0

我正在尋找設置狀態的深層屬性的方法。設置狀態的深層屬性

比方說,國家和它看起來像這樣:

{ 
    alpha: { 
    beta: 'hello' 
    } 
} 

組件有一個方法爲onChange,使用lodash set功能。

onChange({key, value}) { 
    this.setState(set(Object.assign({}, this.state), data.key, data.value)) 
} 
+0

https://github.com/kolodny/immutability-helper按照https://facebook.github.io/react/docs/update.html。 –

回答

0

我不太清楚你爲什麼要使用lodash。如果您只是使用this.setState(...)設置狀態,則不必關心合併舊狀態和新狀態。

對於深入到你的國家做這樣的事情:

this.setState({alpha: {beta: "your new Value"}}); 

或動態鍵值對:

this.setState({alpha: {[key]: value}}); 
+0

如果'alpha'具有多個鍵值,它將不起作用。這將用新對象覆蓋'alpha'的值。 – nrgwsth

+0

是的,的確如此。你的答案會解決這個問題。 – EatYaFood

1

對於深成分,像這樣的設置狀態,

this.setState({ 
    alpa:{ 
     ...this.state.alpha, //this will copy all other object values 
     beta: 'hello'   //this will change only values that you need 
    } 
})