突变未提交状态 vuex - Nuxt

Posted

技术标签:

【中文标题】突变未提交状态 vuex - Nuxt【英文标题】:Mutation not committing state vuex - Nuxt 【发布时间】:2019-08-17 15:25:08 【问题描述】:

我正在开发 vuex 应用程序,在我的另一个页面上,我正在提交更改以说明它的工作状态,但是在这个特定页面上,我从 api 获取一些数据并将其存储在存储中,但它卡在了突变中,我是获取突变有效负载中的所有数据,但不影响更改,请检查屏幕截图和代码,

我无法创建小提琴,因为它在那里工作

获取物品

async getItems () 
   await this.$axios.get(`/api/projects/w/latest/all`)
       .then(response => 
          this.$store.commit('project/UPDATE_PROJECTS', response.data.items)
        );
 

动作

updateProjectsAction (context, projects) 
    context.commit('UPDATE_PROJECTS', projects)
,

变异

UPDATE_PROJECTS (state, payload ) 
    state.projects = payload

projects: ,

回应

当我单击加载状态或手动提交这些更改时,它会给我这个错误。

【问题讨论】:

【参考方案1】:

获取物品

this.$store.commit('project/UPDATE_PROJECTS', response.data.items)

你应该改成

this.$store.dispatch('project/updateProjectsAction', response.data.items)

在行动中你应该改变

updateProjectsAction (commit, projects) 
commit('UPDATE_PROJECTS', projects),

最后一件事,你应该有从 vuex 获取数据的 getter

getters:
    getProjects: state =>
          return state.project
  

在.vue中

import 'mapGetters' from 'vuex'
export default 
computed:
       ...mapGetters(
           projects: project/getProjects
      )
   

getters 和 computed 将帮助你的 vue 应用响应

【讨论】:

感谢@DeadToy,但仍然出现相同的错误“无法在未定义、空值或原始值上设置反应属性:未定义” 你的 axios 返回一个数组但在状态项目是对象,更改项目 = []

以上是关于突变未提交状态 vuex - Nuxt的主要内容,如果未能解决你的问题,请参考以下文章

nuxt vuex:不要在突变处理程序之外改变 vuex 存储状态

在 nuxt 中出现此错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态

Nuxt / Vue - 不要在突变处理程序之外改变 vuex 存储状态

Vuex,Nuxt:未知的动作类型

Vuex 突变似乎没有在加载时更新状态

Vuex-页面在提交状态更改后未更新