react-router – 用getComponent如何传递道具?

前端之家收集整理的这篇文章主要介绍了react-router – 用getComponent如何传递道具?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法弄清楚如何将道具传递给组件.这很重要,因为我不想在componentDidMount方法获取数据,因为它对搜索引擎是不可见的.

我的代码看起来像这样

const router = 
<Route path="/" component={App}>
<IndexRoute onEnter={redirectToLogin} component={LandingPage} />
<Route path="panel" component={ ControlPanel }>
  ...
</Route>
<Route 
  path="/:handle" 
  onEnter={maybeRedirectToHome}
  getComponent={(location,callback)=> {
      getSiteHandleByName(location.pathname.slice(1))
      .then(function(handle){
        if (handle){
          callback(null,Portfolio)
        } else {
          callback(null,NotFound)
        }
      })
      .catch(callback)
  }}
  getChildRoutes={(location,callback)=> {
    callback(null,portfolioRoutes)
  }} 
/>
</Route>

用户访问像mysite.com/thishandleisvalid这样的有效网址时,我正在尝试提供投资组合React App,但我还需要在getComponent点获取该应用的所有内容并将其作为属性传递.例如.你通常会做这样的事情< Portfolio contentItems = {fetchedItems} />.

这样做有可能吗?

使用无状态组件非常容易.做一些像:
function getComponent(location,callback) {
  const Component = /* ... */;
  const items = /* ... */;

  callback(null,props => <Component {...props} items={items} />);
}

我们没有明确支持这种模式的原因是因为以这种方式连接起来是相当不典型的 – 对于需要处理这类事情的应用程序,使用onEnter挂钩更常见.填充Flux商店,然后根据需要将组件连接到相关商店.

猜你在找的React相关文章