javascript - 如何正确地延迟加载 Vuex 模块?
问题描述
我尝试以这种方式注册它们。
调用时store.state['CHAT_BASE'].someData
抛出错误,试图获取未定义的值。
使用静态导入,一切正常。
.vuex 文件
import Vue from 'vue';
import Vuex from 'vuex';
import createLogger from 'vuex/dist/logger';
Vue.use(Vuex);
const enableLogger = false, /* You can do this: process.env.NODE_ENV !== 'production' */
store = new Vuex.Store({
strict: false,
plugins: enableLogger ? [createLogger()] : [],
modules: {
COMMON: () => import('./modules/common'),
/* Operators cabinet. */
RMS_REQUESTS: () => import('./modules/rms/operators_cabinet/requests'),
/* Request tree. */
RMS_PROCESS_DATA: () => import('./modules/rms/request_tree/process_data'),
RMS_FIELDS: () => import('./modules/rms/request_tree/fields'),
RMS_STATUSES: () => import('./modules/rms/request_tree/statuses'),
/* Chat. */
CHAT_COMMON: () => import('./modules/chat/common'),
CHAT_BASE: () => import('./modules/chat/base'),
CHAT_MESSAGE: () => import('./modules/chat/message'),
CHAT_SETTING: () => import('./modules/chat/setting'),
CHAT_HISTORY: () => import('./modules/chat/history')
}
});
export default store;
我试过这样
import('./modules/chat/base.js')
.then(module=> {
store.registerModule('CHAT_BASE', module.default);
});
但在这种情况下,即使不需要模块也会加载。在未加载 Vue 组件的页面上。
如何在一个文件中进行延迟加载?
解决方案
推荐阅读
- c# - 新类对象 - 保留旧值
- android - 如何从 Android 调用后端 Python 脚本
- php - MySQL在单个单元格中通过多个ID连接查询
- angular - 什么是 Angular 中的示意图?
- d3.js - 将饼图更改为箭头环形图
- php - 函数未返回预期结果
- php - Yii2-view 在提交 excel 文件后给我错误
- android - 如何在奥利奥重新注册地理围栏
- android - java.lang.IllegalArgumentException:无效的 Region.Op - 按钮背景失败中只有 INTERSECT 和 DIFFERENCE
- c - 预处理器和宏