我在 创建了 这个文件 src/pages/components/RegisterAreaSelect/model.js
在 src/pages/components/RegisterAreaSelect/index.js 使用不了
给最小可复现例子。
src/pages/components/RegisterAreaSelect/model.js
内容
export default {
namespace: 'registerAreaSelect',
state: {
areaData: 123, // 注册区域数据
parkData: 456, // 注册园区数据
},
effects: {
*query({ payload }, { call, put }) {},
},
reducers: {
loadData(state, { payload }) {
return {
...state,
...payload,
}
},
},
}
src/pages/components/RegisterAreaSelect/index.js
内容
import React from 'react'
import { connect } from 'dva'
@connect(({ registerAreaSelect, loading }) => ({
areaData: registerAreaSelect.areaData,
}))
class RegisterAreaSelect extends React.PureComponent {
render() {
const { areaData } = this.props
return <div>{areaData}</div>
}
}
export default RegisterAreaSelect
报错信息

@sorrycc
我也遇到类似的问题了,求解~
给最小可复现仓库。
应该是整个 components 文件夹被排除了,没作为页面时;pages文件夹下的model会在进入页面时注册models

试试在connect 前手动注册model (未试过)
window.g_app.model({ namespace: 'registerAreaSelect', ...(require('src/pages/components/RegisterAreaSelect/model.js').default) });
require 应该换成 import,所以应该是这样的
import model form '@/components/RegisterAreaSelect/model.js';
window.g_app.model({ namespace: 'registerAreaSelect', ...model });
@superchow +1
已解决
是因为 配置了 routes.exclude 路由过滤掉了 components 所以在 components 中不能使用model.js
'umi-plugin-react',
{
dva: { immer: true },
antd: true,
'antd-pro': true,
routes: {
exclude: [
/model\.(j|t)sx?$/,
/service\.(j|t)sx?$/,
/models\//,
/components\//,
/services\//,
],
},
Most helpful comment
应该是整个 components 文件夹被排除了,没作为页面时;pages文件夹下的model会在进入页面时注册models

试试在connect 前手动注册model (未试过)
require应该换成import,所以应该是这样的