当子路由异步时,首先渲染父路由

时间:2017-08-08 04:38:45

标签: reactjs react-router

是否可以在后台加载子路由时呈现父路由(异步)。

<Route path="/" component={Layout}>
  <Route
    path="home"
    getComponents={(a, cb) => require.ensure([], require => {
      const { default: Component } = require<{ default: any }>('./pages/home')
      cb(null, Component)
    }, 'home')} />
</Route>

此处,Layout组件在第一次渲染之前等待home.js

预期行为

当我去&#39; / home&#39;

  1. Layout应首先呈现
  2. home.js应该被提取为异步
  3. 应使用home.js组件
  4. 触发重新渲染

    我正在使用react-router@3.0.0

    修改

    我使用react-async-component

    找出了一个简单的解决方案

    router.jsx

    <Route path="/" component={Layout}>
      <Route
        path="home"
        component={Home} />
    </Route>
    

    主-async.jsx

    import { asyncComponent } from 'react-async-component'
    
    const Async = asyncComponent({
      resolve: () => System.import('./home.js'),
    })
    export default Async
    

    我能够通过这种方法实现理想的行为。不过,我仍然愿意接受任何建议。

0 个答案:

没有答案