vuex中调用mutations的两种方法

方法一:

1.现在我们的vuex里面定义了state和mutations

  state: {
	  count:0,
  },
  mutations: {
	  add(state,step){//state是第一个参数必须有,step是自定义的参数
		  state.count += step 
	  },
  },

2.想要在组件里面修改count的值,不可以直接进行修改,要调用mutations来修改

组件A中的代码:

按钮button绑定了addButtion事件,在事件中调用了mutations,格式是

this.$store.commit('xxx',aaa) xxx是在mutations里面定义的方法,aaa是在state后面定义的参数

<template>
	<div class="add">
		我是加法:{
   
   {$store.state.count}}
		<button type="button" @click="addButton()">+1</button>
	</div>
</template>

<script>
	export default{
		methods:{
			addButton(){
				this.$store.commit('add',3)//这里的step就是3
			}
		},
	}
</script>

方法二:

1.在组件里引入mapMutations

	import { mapMutations } from 'vuex'

2.在vuex中定义mutations和方法一 一样:

  state: {
	  count:0,
  },
  mutations: {
	  add(state,step){//state是第一个参数必须有,step是自定义的参数
		  state.count += step 
	  },
  },

3.在组件里的methods引入mutations

<template>
	<div class="sub">
		我是减法:{
   
   {count}}
		<button type="button" @click="buttonSub()">-N</button>
	</div>
</template>

<script>
	import {mapState, mapMutations} from 'vuex'
	export default {
		methods:{
			...mapMutations(['sub']),//  <<------------在这里引入mapMutations
		},
	}
</script>

4.用this.xxx调用mutaions里面定义的xxx方法,参数写在括号里

<template>
	<div class="sub">
		我是减法:{
   
   {count}}
		<button type="button" @click="buttonSub()">-N</button>
	</div>
</template>

<script>
	import {mapState, mapMutations} from 'vuex'
	export default {
		computed:{
			...mapState(['count'])
		},
		methods:{
			...mapMutations(['sub']),
			buttonSub(){
				this.sub(3)//括号里写参数 <<------在这里调用sub函数
			}
		},
	}
</script>

猜你喜欢

转载自blog.csdn.net/CSDN_go_die/article/details/121425066