dvajs在嵌套路由中动态导入model

发布于 2022-09-06 09:20:09 字数 1648 浏览 7 评论 0

  1. 我想在子路由中动态导入model, 因为model比较大, 我需要在这个子页面加载的时候加载model, 另外这个我通过modelExtend 动态生成model(动态生成namespace)
    在子路由中动态导入model)
  2. 我的实现是在子路由中引入 app, 然后动态加载路由, 确实动态加载了子路由, 但是会报错
import React from 'react'
import modelExtend from 'dva-model-extend'
import { Route, Switch, Redirect } from 'react-router-dom'
import dynamic from 'dva/dynamic'
import app from '../../../index'

function StepRoutes({ match }) {
  const id = match.params.id
  const routes = [{
    path: `${match.url}/class-maintenance`,
    models: () => [modelExtend(ClassBasicModel, { namespace: `class-maintenance-${id}` })],
    component: () => import('./ClassMaintenance'),
  }, {
    path: `${match.url}/course-selection`,
    models: () => [import('./CourseSelection/basicModel')],
    component: () => import('../Steps/CourseSelection'),
  }]
  return (
    <Switch>
      <Route exact path={match.url} render={() => (<Redirect to={`${match.url}/class-maintenance`} />)} />
      {
        routes.map(({ path, ...dynamics }, index) => (
          <Route
            key={index}
            exact
            path={path}
            component={dynamic({ app, ...dynamics })}
          />
        ))
      }
    </Switch>
  )
}

export default StepRoutes

图片描述

3.请问我该怎么正确的实现这个需求呢? 谢谢.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

为人所爱 2022-09-13 09:20:09

从你发出来的代码没有看,只有ClassBasicModel不知道从哪里来,或许你没有贴出来定义的代码。
其他的没有发现有什么问题。而且报的warning也无法与这段代码对应上。

需要注意的是:
modelExtend中的namespace会把原ClassBasicModelnamespace覆盖掉,在引用这个model时不要把namespace引错了就可以了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文