dva中组件的懒加载

组件的按需加载是提拔首屏机能的主要手腕。

dva@2.0运用了react-router@4.0,相干的运用体式格局有变化,网上的议论基本上都是旧的,不清楚的话会比较乱,这里做一下纪录。

dva@2.0之前

dva@2.0之前的懒加载相干议论有不少,能够参考dva-example-user-dashboard中的写法,徐飞大佬的文章运用 Dva 开辟庞杂 SPA,本质上借助的是webpack的require.ensure完成代码支解,参考代码支解 – 运用 require.ensure
详细完成形如:

function RouterConfig({ history, app }) {
  const routes = [
    {
      path: '/',
      name: 'IndexPage',
      getComponent(nextState, cb) {
        require.ensure([], (require) => {
          registerModel(app, require('./models/dashboard'));
          cb(null, require('./routes/IndexPage'));
        });
      },
    },
    {
      path: '/users',
      name: 'UsersPage',
      getComponent(nextState, cb) {
        require.ensure([], (require) => {
          registerModel(app, require('./models/users'));
          cb(null, require('./routes/Users'));
        });
      },
    },
  ];

  return <Router history={history} routes={routes} />;
}

dva@2.0今后

dva@2.0运用了react-router@4.0,个中的路由是组件式的,本来的体式格局就不太好搞。因而dva供应了一个dynamic函数来处置惩罚。
dva@2.0宣布日记dva api文档中有引见。
详细完成形如:

import dynamic from 'dva/dynamic';

function RouterConfig({ history,app }) {
  const UserPageComponent = dynamic({
    app,
    models: () => [
      import('./models/users'),
    ],
    component: () => import('./routes/UserPage'),
  });
  return (
    <Router history={history}>
      <Switch>
        <Route path="/user" component={UserPageComponent} />
        <Route component={IndexPageComponent} />
      </Switch>
    </Router>
  );
}
export default RouterConfig;
    原文作者:二师兄
    原文地址: https://segmentfault.com/a/1190000018175183
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞