vuex03Getter与mapGetters
【摘要】 Mutations是啥------修改修改修改 更改 Vuex 的 store 中的state在前面我们知道如何去获取state里面的值,可以直接使用state.XX来获取,也可以使用Getter来获取state。但是我们要如何去更改state,这就是Mutations。我们要如何调用Mutations的函数呢。这就要用到commit函数,const store = new Vuex.St...
Mutations是啥------修改修改修改
更改 Vuex 的 store 中的state
在前面我们知道如何去获取state里面的值,可以直接使用state.XX来获取,也可以使用Getter来获取state。
但是我们要如何去更改state,这就是Mutations。
我们要如何调用Mutations的函数呢。
这就要用到commit函数,
const store = new Vuex.Store({
state: {
name: "old name",
age: 18,
},
mutations: {
changName(state) {
state.name = "newName"
},
addAge(state,num) {
state.age +=num
},
}
})
<template>
<div>
<button @click="changeName">我要改名</button>
<button @click="addAge">我长大啦</button>
<p>{{name}}</p>
<p>{{age}}</p>
</div>
</template>
<script>
export default {
name: "Home",
computed: {
age() {
return this.$store.state.age;
},
name(){
this.$store.state.name
}
},
methods: {
changeName() {
this.$store.commit("changName");
},
addAge() {
this.$store.commit("addAge",18);
},
}
};
</script>
commit提交
上面的例子演示了一种提交的方式
methods: {
changeName() {
this.$store.commit({type:"changName"});
},
mapMutations
- 引入
import { mapMutations } from 'vuex'
- 使用
methods: {
...mapMutations([
'changeName', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`
]),
...mapMutations({
changeName12: 'changeName' // 将 `this.add()` 映射为 `this.$store.commit('increment')`
})
}
注意:Mutations不要出现异步操作,虽然写了不会报错,程序也能运行,但是官方不建议写。异步操作全部放在action里
比如下面这个例子,一秒钟之后更改名字,其实也可以运行.
mutations: {
changName(state) {
setTimeout(() => state.name = "newName"
, 1000)
},
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)