Javascript 在React中访问子级中的父级状态
我有(例如)两种成分。第一个是根组件,Javascript 在React中访问子级中的父级状态,javascript,json,reactjs,state,Javascript,Json,Reactjs,State,我有(例如)两种成分。第一个是根组件,app.js。它导入一些JSON数据并将其置于状态。这很好(我可以在React开发工具中看到) 正确的方法是将状态作为props传递给Docs组件 但是,由于您使用的是React Router,因此可以以稍微不同的方式访问它:this.props.route.param而不是默认的this.props.param 因此,您的代码应该大致如下所示: <Route path="/docs" component={Docs} docs={this.state
app.js
。它导入一些JSON
数据并将其置于状态
。这很好(我可以在React开发工具中看到)
正确的方法是将状态作为
props
传递给Docs
组件
但是,由于您使用的是React Router
,因此可以以稍微不同的方式访问它:this.props.route.param
而不是默认的this.props.param
因此,您的代码应该大致如下所示:
<Route path="/docs" component={Docs} docs={this.state.docs} />
及
{this.props.route.docs.map(函数(研究,键){
在此处返回随机文本;
})}
另一种方法是:
<Route path="/docs" component={() => <Docs docs={this.state.docs}/>}>
另一种方法是
<Route path='/' render={ routeProps => <Home
{...routeProps}
docs={this.state.docs}
/>
}
/>
希望有帮助 我无法将我的20个组件全部发送给州政府,有一种方法可以用redux实现吗?这并不能解释什么。传球是很容易的,但是接下来呢?用父对象的状态扩展子对象,使它们共享完全相同的对象,而不是子对象中状态的副本,正确的方法是什么?@vsync如果将父对象的状态作为道具传递给子对象,它将是相同的对象。首先,它将是。但是随后
setState
将在子系统中的某个地方被调用,然后子系统的状态将不同步,因为新一代开发人员非常喜欢这个新事物,称为不变性。可怕的事情。只会导致问题。@vsync如果要与父级共享子级的状态,则应使用回调修改父级的状态,并使用propsrelated向下传递-
{this.props.route.docs.map(function(study, key) {
return <p>Random text here</p>;
})}
<Route path="/docs" component={() => <Docs docs={this.state.docs}/>}>
<Route path="/" component={(props) => <Docs docs={this.state.docs}>{props.children}</Docs>}>
{
this.props.docs.map((study, key)=> {
return <p key={key}>Random text here</p>;
})
}
<Route path='/' render={ routeProps => <Home
{...routeProps}
docs={this.state.docs}
/>
}
/>
this.props.docs