通过root?Vue2 Nuxt Vuex从另一个存储中的操作提交变异

xpcnnkqh  于 2023-02-13  发布在  Vue.js
关注(0)|答案(1)|浏览(116)

这一直在折磨我。我有一个vuex商店,里面有一个名为“RyansBag”的文件夹,我用它来测试东西。我还有另外两个文件夹,警报和库存。所以每个文件夹的结构都是这样的
store〉瑞安斯巴克/Alert/产品中心
在我的Inventory index.js文件中,我们运行一个函数来向库存系统添加一个项目。

async addInventory_Catalog({commit}, payload){
          try{

        const response = await this.$axios.put('Inventory/AddFromCatalogDefault', null, {
            params:{
            originalUPC: payload.upc, 
            clientID: payload.clientId, 
            saleprice: payload.sellPrice,
            cost: payload.sellPrice,
            Condition: payload.condition.conditionName,
            Serial: payload.serialNumber,
            Notes: payload.notes,
            HoldDays: payload.holdDays,
          }
        });
     console.log(response.data.success)
     commit('RyansBag/Alerts/showAlerts', 'You have added a product!', {root: true})
     return response.data;
  } catch (error) { alert(error); console.log(error); }
  },

在这里,我们只是传递项目,当它完成-提交更改到我们的警报,这是在商店〉RyansBag/警报。
你看我试着叫它:

commit('RyansBag/Alerts/showAlerts', 'You have added a product!', {root: true})

我的理解是简单地声明提交来自这个存储作为根状态......但是我不确定我是否应该以某种方式将提交注册到/Alerts中作为全局项。https://vuex.vuejs.org/guide/modules.html#accessing-global-assets-in-namespaced-modules
编辑:::编辑:在操作中没有提交请求。添加到帖子。但是现在我得到警告,不要在状态处理程序之外改变状态。
下面是它请求在警报中到达的变异。

export const mutations = {
    showAlerts(state, message) {
        let timeout = 0
        if (state.status.showAlert) {
          state.status.showAlert = false
          timeout = 300
        }
        setTimeout(() => {
          state.status.showAlert = true
          state.status.message = message
        }, timeout)
      },

      hideAlerts(state) {
        state.status.showAlert = false
      },
}
qc6wkl3g

qc6wkl3g1#

修复方法是a)确保我在操作参数中调用了commit。B)在变异中不使用setTimeout,而是将变异设置为隐藏,并使用操作来setTime。

相关问题