我的 struct 如下:
Component 1
- |- Component 2
- - |- Component 4
- - - |- Component 5
Component 3
组件3应根据组件5的状态显示一些数据.
由于props 是不可变的,我不能简单地将其状态保存在组件1中并转发它,对吗?是的,我读了大约Redux本,但我不想用它.我希望仅凭react 就能解决这个问题.我说错了吗?
我的 struct 如下:
Component 1
- |- Component 2
- - |- Component 4
- - - |- Component 5
Component 3
组件3应根据组件5的状态显示一些数据.
由于props 是不可变的,我不能简单地将其状态保存在组件1中并转发它,对吗?是的,我读了大约Redux本,但我不想用它.我希望仅凭react 就能解决这个问题.我说错了吗?
对于子代-父代通信,您应该传递一个函数来设置从父代到子代的状态,如下所示
class Parent extends React.Component {
constructor(props) {
super(props)
this.handler = this.handler.bind(this)
}
handler() {
this.setState({
someVar: 'some value'
})
}
render() {
return <Child handler = {this.handler} />
}
}
class Child extends React.Component {
render() {
return <Button onClick = {this.props.handler}/ >
}
}
通过这种方式,子对象可以通过使用props传递的函数调用来更新父对象的状态.
但你必须重新考虑组件的 struct ,因为据我所知,组件5和组件3并不相关.
一种可能的解决方案是将它们包装在一个更高级别的组件中,该组件将包含组件1和3的状态.该组件将通过props 设置较低级别的状态.