我在我的应用中使用react-router(v3)进行路由。我有一些嵌套路由,并希望在子组件中访问父组件状态。
路线:
<Route component={Main}>
<Route path="home" component={Home} />
</Route>
主要组件(父级):
export default class Main extends Component {
constructor(prop){
super(prop);
this.state = {
user : {}
}
}
render(){
return (
<div>
Main component
</div>
)
}
}
主页组件(儿童):
export default class Home extends Component {
constructor(prop){
super(prop);
}
render(){
return (
<div>
Main component
want to access user data here. how to access user from parent component?
</div>
)
}
}
在Home
组件中,我想访问用户数据,即父组件Main
。有没有办法在子组件中访问父组件状态?
答案 0 :(得分:7)
您的问题是,您无法将user
作为道具传递给Home
,因为App
并非直接呈现Home
。您通过React-Router
完成了这项工作。
你有两种方法:
Redux
和connect()
Main
和Home
到商店中的user
。这样,user
不属于Main
状态,而是应用商店的一部分,可以从其他组件访问。这是最复杂/可扩展的解决方案。答案 1 :(得分:1)
将父组件的状态发送为子组件的道具。 在Parent组件中像这样获取子对象...
<Home user={this.state.user} />
按this.props.user