vue.js - Vue 模式避免循环依赖:在 Vuex 存储和组件中使用模型(类模块)并存储在模型中?
问题描述
任何人都可以指出一个允许的模式:
- 在 Vuex 商店中使用模型(以类模块的形式)和
- 在这些模型中使用 Vuex 商店和
- 在组件中也使用模型?
我能够实现前两点,但是当我尝试将模型导入任何组件时,会发生循环依赖并且应用程序失败。
我当前的模式如下所示:
*** main.js ***
import { store } from 'pathToStore/store';
export const vue = new Vue({
el: '#app',
store,
render: h => h(App)
});
*** store.js ***
import vuexModule from './modules/vuexModule'
export const store = new Vuex.Store({
modules: { vuexModule }
});
*** vuexModule.js ***
import { models } from 'pathToModels/models';
export default {
state,
mutations,
actions,
getters
};
*** 模型.js ***
import * as importedModels from './modelsAggregator';
export const models = importedModels;
*** 模型聚合器.js ***
export { MyModel} from './MyModel';
export { MyModel2} from './MyModel2';
...
**** MyModel.js ****
import { store } from 'pathToStore/store';
export class MyModel {
constructor () {};
}
正如我所说,我可以在没有循环依赖的情况下使用models
instore
和store
in (感谢 modelsAggregator 模式),但也可以在组件models
中使用它会很方便。models
可以实现吗?
解决方案
似乎我找到了一种将模型传递给组件的方法。我只是将models
对象分配state
给 vuex 模块的属性。这样我就可以通过this.$store.state.models
. 这些是对我的问题中描述的模式的更改:
*** store.js ***
import vuexModule from './modules/vuexModule';
import vuexModels from './modules/vuexModels';
export const store = new Vuex.Store({
modules: { vuexModule, models: vuexModels }
});
*** vuexModels.js ***
import { models } from 'pathToModels/models';
const state = models;
export default { state };
store
在入口文件之前导入也很重要App.vue
。
推荐阅读
- c++ - 为什么我查找两个数字的所有除数的方法不起作用
- php - 尝试插入数据库时遇到错误消息
- haskell - 如何让`cabal install`忽略本地`.cabal`文件?
- java - 如何在 JUnit 测试中重用对象?
- c# - 从 switch 语句 C# 中访问多个变量
- python - Python list 可以在迭代期间发生变异,但不能在 deque 中发生变异。为什么?
- jmeter - 按特定顺序运行 Http 请求 JMeter
- python - 在 Python 中将 numberDecimal 值投影到浮点数中
- google-tag-manager - GTM 规则如何运作
- jenkins - 安装 Jenkins onminikube 显示 Failed to pull image "jenkins/jenkins:2.303.3-jdk11"