鍍金池/ 問答/HTML/ dvajs在嵌套路由中動態(tài)導(dǎo)入model

dvajs在嵌套路由中動態(tài)導(dǎo)入model

  1. 我想在子路由中動態(tài)導(dǎo)入model, 因為model比較大, 我需要在這個子頁面加載的時候加載model, 另外這個我通過modelExtend 動態(tài)生成model(動態(tài)生成namespace)
    在子路由中動態(tài)導(dǎo)入model)
  2. 我的實現(xiàn)是在子路由中引入 app, 然后動態(tài)加載路由, 確實動態(tài)加載了子路由, 但是會報錯
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.請問我該怎么正確的實現(xiàn)這個需求呢? 謝謝.

回答
編輯回答
毀與悔

從你發(fā)出來的代碼沒有看,只有ClassBasicModel不知道從哪里來,或許你沒有貼出來定義的代碼。
其他的沒有發(fā)現(xiàn)有什么問題。而且報的warning也無法與這段代碼對應(yīng)上。

需要注意的是:
modelExtend中的namespace會把原ClassBasicModelnamespace覆蓋掉,在引用這個model時不要把namespace引錯了就可以了。

2017年2月7日 08:30