get一个vuex的报错问题

先贴出报错:图片描述

组价中vuex的使用如下:图片描述

ps:代码中this.itemList为组件内变量,而非state状态值

store中相关模块的代码段如下:图片描述

关于这个问题出现的缘由,求大神解释一下

阅读 3.5k
6 个回答

clipboard.png

clipboard.png

'CART_INFO'和[CART_INFO] 不是一个东西吧
把大括号去掉呢

新手看不出代码哪里错了,错误信息好像是你在mutation的回调函数之外改变了store的状态

。。。。

clipboard.png

import * as types from '../mutation-types'

const state = {}

// getters
const getters = {}

// actions
const actions = {}

// mutations
const mutations = {}

export default {
  state,
  getters,
  actions,
  mutations
}

clipboard.png

这一行,在组件内非法操作了 vuex 的数据。

itemList已经存在于store中了,更改store中数据的唯一方法就是提交mutation,只能在mutation内部修改state中的数据,你在组件中通过this.itemList.push修改了itemList,就会warning。正确的做法是将你的itemList复制出来一份

let cloneItemList = this.itemList.slice(0);
cloneItemList.push(proObj);
this.$store.commit('CART_INFO',cloneItemList);

这样就可以了。

LAYER_PROP_TYPE: (state, val) => {
        state.layerPropType = val
    }

要加箭头或function(state,val)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题