【发布时间】:2019-04-03 21:48:39
【问题描述】:
假设我有这个 React 组件:
class SomeComponent extends Component {
constructor(props) {
super(props);
this.state = {
topObject: {
childObject1: {
grandChildObj1: {
attr1: this.props.val1,
attr2: this.props.val2
}
},
childProp: 1
},
topProp: 2
};
}
render() {
return (
<div>
<span>{this.state.topObject.childObject.grandChildObject.attr1}
</span>
</div>
// ...
)
}
changeDeepNestedStateValue(val) {
// need code here to change the state
// set topObj.childObject.grandChildObject.attr1
// to the 'val' argument
}
}
我需要在函数“changeDeepNestedStateValue”中使用什么代码,以便它不可变地更改状态,以便 React 检测到更改并重新渲染?
深层嵌套的状态值是不好的做法还是反模式?如果是这样,是否存在一种状态的最佳结构,可能是平坦的?
【问题讨论】: