将 props 传递给每个组件

2024-04-25

我正在类内部通过 React Router 渲染一堆路由,我需要组件能够访问正在触发渲染的类的实例,因为它将包含服务工厂的实例等。

但是,我找不到任何有关将 props 传递到通过 React Router 渲染的组件的信息,或者对我来说更有帮助,将 props 传递到通过 React Router 渲染的每个组件,以便它们可供使用。

这可能吗?如果是这样,怎么办?

我的代码的精简版本:

var routes = {
  component : 'div',
  childRoutes : [{
    path      : '/',
    component : AppContainer
  }]
};

// Not a React Component. Need a value from here, to 
// be passed to the AppContainer
class App {
  render() {
   let foo = 'bar';

    ReactDom.render(
      <Router history={history}
              routes={routes} />,
      document.getElementById('container')
    );
  }
}

// Rendered via React Router
class AppContainer extends React.Component {
  render() {
    console.log(this.props.foo); //bar
    return <div>{this.props.foo}</div>;
  }
}

如果您有根路由组件,您可以考虑一个非常简单的选项,如下所示:

export default React.createClass({
    render: function() {
      return React.cloneElement(this.props.children, { propValue: someValueHere });
    }
});

这实际上只是创建您提供的子组件,同时传递您选择的一些额外道具。它可能不会永远是您的解决方案,但我希望它足以让您开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 props 传递给每个组件 的相关文章

随机推荐