javascript - 在 Meteor 中使用 React Layout 将 Prop 传递给曾孙组件

标签 javascript meteor reactjs

我只是想知道完成这个 React 任务的最佳方法是什么。 比如说,我有一个像这样的组件:

App = React.createClass({
  //mixins: [ReactMeteorData],

  // Initial State declared here.
  getInitialState() {
    return {};
  },

  proxyState(state) {
    console.log(`Triggered proxyState, top-level: ${state}`);
  },

  render() {
    return (
      <div>
        {this.props.layout}
      </div>
    );
  }

});

我需要能够传递下去proxyState(state)到曾孙组件,子组件(和孙组件)将使用 ReactLayout 渲染.

例如,这里有一些来自 FlowRouter 的代码,显示了我当前如何渲染与该链相关的组件:

FlowRouter.route('/proxies', {
  name: 'proxies',
  action() {
    const content = <ProxyPage />;
    ReactLayout.render(App, {
      title: 'Proxies',
      layout: <MainLayout content={content} />
    });
  }
});

内容呈现得很好,但我不明白该怎么做是通过 proxyState()下降到 <MainLayout /> (随后, <ProxyPage /> 将在其中呈现,然后 <ProxyForm /> 将在其中呈现。

如有任何帮助,我们将不胜感激。我对传递 props 的概念很陌生,我想这对于已经写 React 东西 3 天的人来说可能是半高级的东西。提前致谢!

如果有人需要查看我的其余代码以了解我在寻找什么,该项目(当前)位于公共(public)存储库中:https://bitbucket.org/czbaker/karuto

最佳答案

将 props 传递给 child 最简单的方法就是直接传递它们:

var Child = React.createClass({
  render: function() {
    return (
      <div>{this.props.myProp}</div>
    );
  }
});

var Parent = React.createClass({
  getDefaultProps: function() {
    return (
      someProp: "I'm a prop value!"
    );
  },
  render: function() {
    return (
      <Child myProp={this.props.someProp} />
    );
  }
});

假设你有一个树状家庭结构,你可以让 parent 不断地传递你需要他们传递的 Prop 。

但是,上面的代码可能会有点乏味,尤其是当你想将 prop 发送到深树中的每一层时。为了让生活更简单,React 有一个名为 context 的概念。这些允许您指定一个 prop 以供父 prop 的所有子级使用,无论深度如何。

我不会从文档中复制/粘贴示例,所以请在此处查看:https://facebook.github.io/react/docs/context.html随时提问 :)

关于javascript - 在 Meteor 中使用 React Layout 将 Prop 传递给曾孙组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117891/

相关文章:

javascript - 在不改变词序的情况下反转字符串中的每个词

javascript - jQuery keyup 事件只触发一次

javascript - 当用户单击链接到下一页的那些元素时,如何在网页中显示灰色并显示加载?

javascript - React-router:如何手动调用Link?

reactjs - Redux 表单验证在加载时触发(UPDATE_SYNC_ERRORS)

javascript - 音频暂停时getByteTimeDomainData?

javascript - Dropzone 卡在大于 1mb 的文件上

node.js - 使用 collectionfs 更新图像

meteor - 有没有办法知道 meteor 订阅何时是 'valid' ?

javascript - 世博相机第一次显示黑屏: React-Native