【发布时间】:2019-12-31 22:53:11
【问题描述】:
在 modules 文件夹中设置 redux 文件:
\modules
\application
\actions
application.js
index.js
\records
application.js
\reducers
application.js
index.js
我的application 记录是导出默认值的不可变记录:
import {Record, List, Map, Set, OrderedMap} from 'immutable';
const Application = new Record({
'loaded': false,
});
export default {
Application,
};
在我的reducers/application.js 文件中,我在导入时解构导出:
import {Record, List, Map, Set, OrderedMap} from 'immutable';
import { Application } from '../records/application';
import
APP_INITIALIZE
from '../actions';
const initialAppState = new Application();
export default (state = initialAppState, action )=> {
switch (action.type) {
case APP_INITIALIZE:
return state
.set('loaded', true);
default:
return state;
}
};
我希望这会起作用,因为records/application.js 导出了一个包含不可变记录的对象。但是,我收到以下错误:
application.js:10 Uncaught TypeError: _records_application__WEBPACK_IMPORTED_MODULE_1__.Application is not a constructor
当我检查reducers/application.js 中的Application 对象时,我得到undefined。
我的.babelrc 文件如下所示:
{
"presets": [
"@babel/preset-react",
["@babel/preset-env", {
"useBuiltIns": "usage",
"corejs": 2,
"targets": {
"firefox": "64",
"chrome": "58",
"ie": "11",
"electron": "4"
},
}]
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
我在这里做错了什么?
【问题讨论】:
-
如果您想实际选择性地导入(这就是解构),请停止使用
default导出。或者,如果您绝对需要default导出,请停止选择性导入并将模块作为命名空间导入。
标签: javascript ecmascript-6 babeljs