繁体   English   中英

如何在 ReactJs 中将值从父元素传递给子元素?

[英]How do I pass values from a parent element to a child element in ReactJs?

如果我嵌套了 react 元素,当子元素不在父元素内部时,如何将父元素中的值传递给子元素。

React.render(
  <MainLayout>
    <IndexDashboard />
  </MainLayout>,
  document.body);

在此代码中,我希望能够在 IndexDashboard 元素中访问 MainLayout 元素中的一些函数。 如何将这些函数传递给子元素?

您通常不会像在React.render调用中那样渲染子元素,而是将IndexDashboard移动到MainLayout组件的渲染中,以便您可以向它传递所需的道具。

根据您的评论进行编辑:在动态渲染子项的情况下,我建议根据您所在的页面将其作为道具传递。 我不知道 JSX 是否支持该语法,但您肯定可以使用React.createElement

React.render(
  <MainLayout childProp={ IndexDashboard }/>,
document.body);

#MainLayout
render: function(){ (
  return (
    React.createElement(this.props.childProp, [otherProps...])
  )       
}

我不确定你所说的“它不是父级内部的”是什么意思,因为它很明显是用它呈现的。 如果您绝对不能将子级移动到父级渲染函数,您可能希望使用类似通量的架构,使用存储来容纳MainLayoutIndexDashboard都需要的数据

您可以使用 cloneElement 函数来修改子组件的 props:

#MainLayout

render: function(){ (
  var contents = React.Children.map(this.props.children, function(child) {
    return React.cloneElement(child, {onSomeEvent: this.onSomeChildEvent})
  }.bind(this));

  return (
        <div>
            {contents}
        </div>
  );       
}

详情参考以下链接: https : //facebook.github.io/react/blog/2015/03/03/react-v0.13-rc2.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM