import { connect } from 'dva';
import React from 'react'
import { Router } from 'dva/router'
import App from './routes/app'
const cached = {}
const registerModel = (app, model) => {
if (!cached[model.namespace]) {
app.model(model)
cached[model.namespace] = 1
}
}
function router ({ history, app }) {
const routes = [
{
path: '/',
component: App,
onEnter(nextState, replace){
if (app.user.rebate_level_name && nextState.location.pathname === '/users/rebate_histories') {
replace('/error')
}
},
getIndexRoute(nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/dashboard'))
cb(null, { component: require('./routes/dashboard') })
}, 'dashboard')
},
childRoutes: [
{
path: 'users/out_money',
name: 'out_money',
getComponent(nextState, cb) {
require.ensure([], require => {
// registerModel(app, require('./models/out_money'))
cb(null, require('./routes/users/OutMoney'))
}, 'out_money')
}
},
{
path: 'users/infomation',
name: 'infomation',
getComponent(nextState, cb) {
require.ensure([], require => {
// registerModel(app, require('./models/infomation'))
cb(null, require('./routes/Infomation.js'))
}, 'infomation')
}
},
{
path: 'users/customer_relation',
name: 'customer_relation',
getComponent(nextState, cb) {
require.ensure([], require => {
// registerModel(app, require('./models/out_money'))
cb(null, require('./routes/users/CustomerRelation.js'))
}, 'customer_relation')
}
},
{
path: 'dashboard',
name: 'dashboard',
getComponent(nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/dashboard'))
cb(null, require('./routes/dashboard'))
}, 'dashboard')
}
},
{
path: 'users/rebate_histories',
name: 'users/rebate_histories',
getComponent(nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/rebate_histories'))
cb(null, require('./routes/users/rebate_histories'))
}, 'rebate_histories')
}
},
{
path: 'users/in_money',
name: 'users/in_money',
getComponent(nextState, cb) {
require.ensure([], require => {
// registerModel(app, require('./models/in_money_orders'))
cb(null, require('./routes/users/InMoney'))
}, 'in_money')
}
},
{
path: 'users/in_money_orders',
name: 'users/in_money_orders',
getComponent(nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/in_money_orders'))
cb(null, require('./routes/users/in_money_orders'))
}, 'in_money_orders')
}
},
{
path: 'users/out_money_orders',
name: 'users/out_money_orders',
getComponent(nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/out_money_orders'))
cb(null, require('./routes/users/out_money_orders'))
}, 'out_money_orders')
}
},
{
path: 'users/holdings',
name: 'users/holdings',
getComponent(nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/holdings'))
cb(null, require('./routes/users/holdings'))
}, 'holdings')
}
}, {
path: '*',
name: 'error',
getComponent(nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/error'))
}, 'error')
}
}
]
}
]
return <Router history={history} routes={routes} />
}
export default connect(({app}) => {app})(router)
这样写会报错 Uncaught TypeError: Cannot call a class as a function
require('./models/modelName')得到的不就是model吗
补充,如果想在router里发起dispatch请求,可以用app._store.dispatch({ ..... })
@wuyunjiang 多谢
Most helpful comment
require('./models/modelName')得到的不就是model吗
补充,如果想在router里发起dispatch请求,可以用app._store.dispatch({ ..... })