【问题标题】:How to have global store to share with other store in Nuxt如何让全球商店与 Nuxt 中的其他商店共享
【发布时间】:2021-09-23 18:05:48
【问题描述】:

例如,我的 nuxt 项目中有 2 个商店文件:商店/用户、商店/帖子

在我的用户中:

    export const state = () => ({
      name: null,
      mail: null
    })
    
    export const mutations = {
      edit(state, data) {
        state.name = data.name,
        state.mail = data.mail
      },
    }

在我的帖子中:

    export const state = () => ({
          title: null,
          content: null
        })
    
    export const mutations = {
      edit(state, data) {
        state.title = data.title,
        state.content = data.content
      },
    }

所以我想要的是拥有另一家具有全球价值的商店

    export const state = () => ({
       list: [],
    })

    export const mutations = {
      add(state, data) {
        state.list.push(data)
      },
    }

所以最后我想使用这最后一家商店,就好像我的商店看起来像这样

用户商店

    export const state = () => ({
      name: null,
      mail: null,
      list: []
    })
    
    export const mutations = {
      edit(state, data) {
        state.name = data.name,
        state.mail = data.mail
      },
      add(state, data) {
        state.list.push(data)
      },
    }

帖子商店

    export const state = () => ({
      title: null,
      content: null,
      list: []
    })
    
    export const mutations = {
      edit(state, data) {
        state.title = data.title,
        state.content = data.content
      },
      add(state, data) {
        state.list.push(data)
      },
    }

【问题讨论】:

  • 你想完成什么?为什么要在商店之间进行这种“合并”?
  • 我不想为所有商店复制相同的代码,我希望拥有一个可以被所有其他商店使用的商店,就像它自己的商店参数一样,这样我可以节省时间和代码空间:)
  • 对不起,不是真的;

标签: vue.js nuxt.js vuex


【解决方案1】:

如果你想要一个更通用的命名空间模块,你可以使用全局 Vuex 操作:https://vuex.vuejs.org/api/#dispatch

这与rootStatehttps://vuex.vuejs.org/api/#mutations配对

足以使一些通用的东西。我通过一些动态插值和条件实现了这种方式。小心不要让它太复杂,100% DRY 并不总是最好的。有时一些重复可能完全没问题!

【讨论】:

  • 我想要这种方式,因为我所有的模块存储都可以有很多相同的代码
猜你喜欢
  • 2020-11-27
  • 1970-01-01
  • 2023-03-31
  • 2016-01-19
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
相关资源
最近更新 更多