首頁 > web前端 > js教程 > 主體

在Vuex中Mutations修改狀態操作下詳解

coldplay.xixi
發布: 2020-07-29 17:25:52
轉載
2135 人瀏覽過

在Vuex中Mutations修改狀態操作下詳解

上篇是讀取state,這篇是修改狀態。即如何操作Mutations。

一. $store.commit( )

Vuex提供了commit方法來修改狀態

1.store.js檔案

const mutations={
  add(state){
    state.count++
  },
  reduce(state){
    state.count--
  }
}
登入後複製

2.在button上的修改方法

#

二. 傳值

#最簡單的修改狀態的操作,在實際專案中我們常常需要在修改狀態時傳值。例如上邊的例子,是我們每次只加1,而現在我們要透過所傳的值來相加。其實我們只要在Mutations再加上一個參數,並在commit的時候傳遞就可以了。我們來看具體程式碼:

1.store.js

const mutations={
  add(state,n){
    state.count+=n
  },
  reduce(state){
    state.count--
  }
}
登入後複製

2.修改按鈕的commit( )方法傳遞的參數,我們傳遞10,意思是每次加10.

#三.模板取得Mutations方法

在實際開發中我們也不喜歡看到$store.commit( )這樣的方法出現,我們希望跟呼叫範本裡的方法一樣呼叫。

例如:@click=”reduce” 就跟沒引用vuex外掛一樣。

1.在範本count.vue裡用import 引入我們的mapMutations:

import { mapState,mapMutations } from 'vuex'

#2 .在模板的

登入後複製

在vuex.store中接收這個參數

const store = new Vuex.Store({
// 定义的公共变量
  state: {
   count: 1,
   students: [
    {
     id: 1,
     name: 'dx',
     age: 18
    },
    {
     id: 2,
     name: 'yx',
     age: 18
    },
    {
     id: 3,
     name: 'ym',
     age: 32
    },
    {
     id: 4,
     name: '刘亦菲',
     age: 30
    }
   ]
  },
 // state中的变量只能在mutations中通过方法修改
  mutations: {
   changeCount: function (state) {
   state.count++
   console.log('改变了count')
   },
   addStudent (state, stu) {
   state.students.push(stu)
   }//通过这种方式,接收来自组件传过来的新加入的学生
  },
  actions: {
  },
  getters: {
  }
})
登入後複製

第二種傳參的方式

元件向vuex傳參

addstu () {
   const newstu = {
   id: 5,
   name: '张国荣',
   age: 44
   }
   this.$store.commit({
   type: 'addStudent',
   newstu: newstu
   })//原先是传入两个参数,现在直接传入一个对象
   //type就是需要调用的mutations里面的方法
   //newstu就是要求接收的对象,也就是新加入的学生
  }
登入後複製

vuex接收元件傳參

mutations: {
   addStudent (state, playload) {
   state.students.push(playload.newstu)
   }
  },
登入後複製

要注意的是,addstudent接收到的第二個參數是一個完整的對象,所以參數的使用略微有點不同

相關學習推薦:javascript影片教學

#

以上是在Vuex中Mutations修改狀態操作下詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:jb51.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!