Nuxt模块状态

时间:2019-05-04 10:29:08

标签: vue.js vuex nuxt

我有一个nuxt应用,模块状态为:

  • 商店
    • index.js,state.js,mutations.js,actions.js,getters.js
    • 模块
      • 帖子
      • index.js,state.js,mutations.js,actions.js,getters.js

在Store / index.js中,我有:

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

import posts from './modules/posts'

export default {
  state,
  getters,
  mutations,
  actions,
  modules: {
    posts
  }
}

我在Store / state.js内部拥有

export default () => ({
  test: null
})

我在内部商店/模块/帖子/index.js中拥有

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

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

在Store / Modules / Posts / state.js中,我拥有:

export default () => ({
  dialog: false,
  test: false
})

我的商店现在已复制了吸气剂,操作等的所有内容。 应该是那样吗?我是否应该使用商店? 当我从基本inldex.js中删除模块时,我拥有所有东西之一,但是所有东西都是不确定的。

存储输出示例:

enter image description here

1 个答案:

答案 0 :(得分:0)

您根本不需要'modules'文件夹。 Nuxt足够聪明,可以通过文件和目录结构来混淆您的商店。因此,您的示例可能是这样的:

  • Dir:商店
    • state.js,mutations.js,actions.js,getters.js
    • Dir:帖子
      • state.js,mutations.js,actions.js,getters.js

请注意,您也不需要index.js文件!实际上,如果您的商店没有特定的根状态,则无需将文件放在商店目录下。

文档对于每个文件应包含的内容含糊不清。这是一个快速指南:

state.js
export default () => ({
  field1: 'init value',
  field2: 'init value'
})
mutations.js
export function mutation1(state, payload) {...}
export function mutation2(state, payload) {...}
getters.js
export getter1(state, getters, rootState, rootGetters) {...}
export getter2(state, getters, rootState, rootGetters) {...}
actions.js
export action1(context, payload) {...}
export action2(context, payload) {...}