- 我想在子路由中动态导入
model
, 因为model比较大, 我需要在这个子页面加载的时候加载model, 另外这个我通过modelExtend
动态生成model(动态生成namespace
) - 我的实现是在子路由中引入
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.请问我该怎么正确的实现这个需求呢? 谢谢.
从你发出来的代码没有看,只有
ClassBasicModel
不知道从哪里来,或许你没有贴出来定义的代码。其他的没有发现有什么问题。而且报的
warning
也无法与这段代码对应上。需要注意的是:
modelExtend
中的namespace
会把原ClassBasicModel
的namespace
覆盖掉,在引用这个model
时不要把namespace
引错了就可以了。