Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React中访问子级中的父级状态_Javascript_Json_Reactjs_State - Fatal编程技术网

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