我已经读过this answer,但是我想稍微改变一下代码的结构,
实际上我想从子组件设置父状态,但是 我不想在父组件中添加任何功能
实际上预期结果如下:
class Parent extends React.Component {
constructor(props) {
super(props)
this.state={modalVisible:false}
}
render() {
return (
<Child modalVisible={this.state.modalVisible} />
<Button onClick={()=>this.setState({modalVisible:true})/>
)
}
}
class Child extends React.Component {
handler(e) {
//handle parent moadlVisible state to false again
}
render() {
return
<Modal
modalVisible = {this.props.modalVisible}>
<Button title="Close Modal" onPress={()=>this.handler(e)}/>
</Modal>
}
}
因此,我想轻松地调用child component
,而无需在parent
中添加一些函数来处理child component
本身,即使关闭{{ 1}}
有没有办法实现我想要的?
答案 0 :(得分:0)
如果您根本不需要两个组件之间的任何连接,则可能必须使用全局状态存储,例如redux。
文档可以在这里找到:
https://redux.js.org/introduction
Redux在所有组件之间创建一个全局状态,而不是局部状态。它确实需要一些配置,但是一旦完全集成,就可以解决您的情况。而且,随着组件的增长,跟踪状态会变得更加容易。
为什么我不能只使用事件?
在这里提问。
react.js custom events for communicating with parent nodes
React方法是将回调显式传递给子级 通过道具—。不支持带有冒泡的自定义事件 反应。
反应式编程抽象是正交的:
通过观察者模式对交互系统进行编程是 困难且容易出错,但仍然是许多实施标准 生产环境。我们提出一种逐渐淘汰的方法 观察者赞成反应式编程抽象。一些 库层帮助程序员平稳地从中迁移现有代码 回调到更具声明性的编程模型。
在我眼中,做这件事的一种可怕方式可能是使用Async Storage
存储键值,但是我不建议这样做。