vuex深入学习 --- Mutation

6 篇文章 0 订阅

vuex深入学习 — Mutation
特点:

  1. 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。

  2. Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。

  3. 这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,但handler不能直接调用

  4. mutation必须是同步函数,适合多个state的操作,mutation是不分组件的,当调用mutation中的方法时,会调用说有组件中的同名方法

    const store = new Vuex.Store({
    state: {
    count: 1
    },
    mutations: {
    increment (state) {
    // 变更状态
    state.count++
    }
    } })

调用: this.$store.commit('increment')

1.提交载荷(Payload)
你可以向 store.commit 传入额外的参数,即 mutation 的 载荷(payload)

    mutations: {
      increment (state, n) {
        state.count += n
      }
    }

直接传参: this.$store.commit('increment', 10)
对象传参: this.$store.commit('increment', {amout: 10, uname: 'tom'})
对象调用:

 this.$store.commit({
      type: 'increment',
      amout: 10
    })

注意:

  1. 最好提前在你的 store 中初始化好所有所需属性。

  2. 当需要在对象上添加新属性时,你应该使用 Vue.set(obj, ‘newProp’, 123)
    或者以新对象替换老对象 state.obj = { …state.obj, newProp: 123 }

  3. 使用常量替代 Mutation 事件类型

       // mutation-types.js
       export const SOME_MUTATION = 'SOME_MUTATION'
    
       // store.js
       import Vuex from 'vuex'
       import { SOME_MUTATION } from './mutation-types'
    
       const store = new Vuex.Store({
         state: { ... },
         mutations: {
           // 我们可以使用 ES2015 风格的计算属性命名功能来使用一个常量作为函数名
           [SOME_MUTATION] (state) {
             // mutate state
           }
         }
       })
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值