Reactjs 如何访问子组件中的父组件状态?
我在应用程序中使用react路由器(v3)进行路由。我有一些嵌套路由,希望访问子组件中的父组件状态 路线:Reactjs 如何访问子组件中的父组件状态?,reactjs,react-router,Reactjs,React Router,我在应用程序中使用react路由器(v3)进行路由。我有一些嵌套路由,希望访问子组件中的父组件状态 路线: <Route component={Main}> <Route path="home" component={Home} /> </Route> export default class Main extends Component { constructor(prop){ super(prop); this.state =
<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>
)
}
}
主要组件(父级):
<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>
)
}
}
导出默认类主扩展组件{
建造师(道具){
超级(道具);
此.state={
用户:{}
}
}
render(){
返回(
主要成分
)
}
}
主组件(子组件):
<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>
)
}
}
导出默认类主扩展组件{
建造师(道具){
超级(道具);
}
render(){
返回(
主要成分
要在此处访问用户数据。如何从父组件访问用户?
)
}
}
在
Home
组件中,我想访问用户数据,即在父组件Main
中。有没有办法访问子组件中的父组件状态?您的问题是,您不能将用户
作为道具传递到主页
,因为应用程序
不会直接渲染主页
。您可以通过React路由器
实现这一点
这里有两种方法:
Redux
和connect()。这样,user
就不是Main
状态的一部分,而是应用商店的一部分,可以从其他组件访问。这是最复杂/可扩展的解决方案
您的问题是,您不能将
用户
作为道具传递到主页
,因为应用程序
不会直接呈现主页
。您可以通过React路由器
实现这一点
这里有两种方法:
Redux
和connect()。这样,user
就不是Main
状态的一部分,而是应用商店的一部分,可以从其他组件访问。这是最复杂/可扩展的解决方案
将父组件的状态作为道具发送给子组件。 在父组件中,像这样获取子组件
<Home user={this.state.user} />
通过
this.props.user访问子组件中的用户
将父组件的状态作为props发送给子组件。
在父组件中,像这样获取子组件
<Home user={this.state.user} />
通过
this.props.user
访问child中的用户正确的方法是将state
作为props
传递到主组件或父组件中,您可以创建一个函数,如addUser
,它将执行所需的setState
,然后将该函数作为props
传递给子组件。正确的方法是将state
作为props
传递给主组件或父组件,您可以创建一个类似于addUser
的函数,该函数将执行所需的setState
,然后将该函数作为props
传递给子组件。上下文-正是我所寻找的!上下文-正是我要找的!