[英]ReactJs how to pass data between components
我一直在学习反应,并且正在逐渐加深对如何在组件之间传递数据的理解。 简单来说,似乎有4种情况:
这是我还没有找到任何指导的第四种情况。 您在一个孩子中,想从父母那里获取一些没有作为道具传递的数据。 那会发生吗?
除了context
,您还可以通过回调从父级获取数据
class Parent extends React.Component {
render() {
return <Child update={Math.random} />
}
}
class Child extends React.Component {
state = { }
componentDidMount() {
this.updateState()
}
updateState = () => {
const { update } = this.props
this.setState({ something: update() }, () => {
setTimeout(this.updateState, 1000)
})
}
render() {
return <div>{this.state.something}</div>
}
}
这样做的一个缺点是,子级必须显式地从父级请求数据(在父级中更改数据不会像在上下文中那样更新子级)。
另一种方法是使用像redux这样的全局商店。
class Parent extends React.Component {
render() {
return (
<div>
<Child />
<button onClick={ () => this.props.setSomething(Math.random()) }>click me</button>
</div>
)
}
}
// where setSomething is an action creator that changes `globalState.something`
connect(function (state) {
return { something: state.something }
}, { setSomething })(Child)
class Child extends React.Component {
render() {
return <div>{ this.props.something }</div>
}
}
connect(function (state) {
return { something: state.something }
})(Child)
第一种情况和第四种情况大致相同,除了子组件从父级提取数据而不是从父级推送数据的情况。 我无法考虑在哪种情况下它会有用。 这似乎是极不可能的情况。 即使我们想要实现它,一种方法是使用函数来附加一个钩子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.