4

我已经在使用模块将我的 Vuex 存储分解为单独的文件,但想知道是否以及如何将存储操作再次分解为多个文件?

一些上下文 - 我Products在基于 Vue 的 Electron 应用程序中有一个商店。在此,我有多种方法可以从本地数据库加载产品,在本地数据库中没有产品时下载产品,并在本地数据库中更新产品。所以我相信你可以想象,我在这个存储文件中的操作变得相当大。

因此,到目前为止,我已经尝试将它们拆分为 2 个文件,initial然后update将它们导入并合并,如下所示:

初始.js:

export default {
    // My methods
}

更新.js:

export default {
    // My methods
}

products.js(商店模块):

import initialActions from './actions/intial';
import updateActions from './actions/update';

const actions = Object.assign(initialActions, updateActions);

现在当我打电话给他们时,state, dispatch, commit都没有定义。所以我有点卡住了,有点不愿意将它们合并回商店文件。

结构:

- store
  - modules
    - products
      - products.js
      - actions
        - initial.js
        - update.js
4

3 回答 3

2

行动1

export default { //methods }

行动2

export default { //methods }

动作.js

import 'action1.js'
import 'action2.js'    
export default { ...action1, ...action2 }

突变和吸气剂也是如此。

于 2021-02-06T13:35:15.780 回答
1

Try this:

import * as initialActions from './actions/intial';
import * as updateActions from './actions/update';

const actions = Object.assign({}, initialActions.default, updateActions.default);

于 2019-01-17T16:52:20.197 回答
1

这意味着您尚未导出 store 中的那些,在您的 store 文件夹中创建 index.js 并根据需要导出您的状态、操作。也始终遵循标准目录结构,然后导出它们。

一个典型的 index.js 看起来像

import actions from './actions'
import getters from './getters'
import mutations from './mutations'
import state from './state'

 export default {
        namespaced: true,
        actions,
        getters,
        mutations,
        state
    }

一个典型的标准商店目录看起来像

Store
├── actions.js
├── getters.js
├── index.js
├── modules
│   ├── app
│   │   ├── mutations.js
│   │   └── state.js
│   └── index.js
├── mutations.js
└── state.js

这样你就永远不会得到未定义的错误。希望这有帮助!

于 2019-01-17T19:29:06.280 回答