vuex mutations

<li v-for="(value, key) in iPhone6S.style"

                        @click="changeStyle(key)"

                        :class="{active: iPhone6S.activeStyleUrl == value}">

                        <span v-text="key"></span>

                    </li>

mutations.js: 

const state = {

  iPhone6S: {

    name: 'Apple/苹果 iPhone 6S',

    desc: '3D Touch、1200万像素照片、4k视频,强大功能于一身。',

    price: '5288 - 6888',

    isSelected: true,

    style: {

    

      '玫瑰金色': 'http://o8yu724qs.bkt.clouddn.com/iphone6s-rosegold-select-2015.png'

    },

    activeStyleUrl: 'http://o8yu724qs.bkt.clouddn.com/iphone6s-silver-select-2015.png',

    storage: {

      '16GB': 5288,

      '64GB': 6088,

      '128GB': 6888

    }

  },

  cart: []

}                   



actions.js 

import * as types from './types'


export default {

  changeStyle: ({ commit }) => {

    commit(types.CHANGESTYLE)

  }

}

types.js

export const CHANGESTYLE = 'CHANGESTYLE'

问题是alert可以弹出来,为什么styleKey 是undefined,还有为什么CHANGESTYLE事件 默认的参数是state

红颜莎娜
浏览 1260回答 2
2回答

至尊宝的传说

你的action里面没有给 commit(types.CHANGESTYLE)传值啊,所以就是undefined

BIG阳

mutations 回调传入的两个参数第一个是state 也就是你当前modules的state, 第二个参数是你dispatch或者在action中commit的中传入的第二个参数。 你这边styleKey显示是undefined 应该是你在dispatch或者你在action中的commit没有传值
打开App,查看更多内容
随时随地看视频慕课网APP