vuex的使用流程&关于vuex的一些问题?

60 篇文章 0 订阅
22 篇文章 0 订阅

在这里插入图片描述

一、vuex的使用流程
在这里插入图片描述
在这里插入图片描述


二、 Vuex和单纯的全局对象有什么区别?

1.Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
2.不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

三、为什么 Vuex 的 mutation 中不能做异步操作?

Vuex中所有的状态更新的唯一途径都是mutation,异步操作通过 Action 来提交 mutation实现,这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

每个mutation执行完成后都会对应到一个新的状态变更,这样devtools就可以打个快照存下来,然后就可以实现 time-travel 了。如果mutation支持异步操作,就没有办法知道状态是何时更新的,无法很好的进行状态的追踪,给调试带来困难。

四、vuex的几大部分

state 提供唯一公共数据源,状态,组件访问state中数据的方法:
	1.this.$store.state.全局数据名称
	2.import { mapState } from 'vuex'
	computed: {
        ...mapState(['count'])
    }
getter 可以认为是store的计算属性,组件访问getter的方法:
	1.this.$store.getters.名称
	2.import {mapGetters } from 'vuex'
	computed:{
        ...mapGetters(['filterPrice'])
    }
mutation 更改vuex中状态的唯一方法是提交mutation:
	1.先在store中 定义mutation
	2.触发mutation
	方法:
		1.this.$store.commit('increment')
		2.import { mapMutations } from 'vuex'
		methods: {
		       ...mapMutations(['add', 'addN'])
		}
action 提交的是mutation,而不是直接改变状态:
	1.先在store中定义action
	2.分发action(action通过store.dispatch触发),方法如下:
		1.store.dispatch('increment')
		2.import { mapActions } from 'vuex'
		methods:{
            ...mapActions(['asyncChange'])
        }
	3.action传递参数
module 每个模块拥有自己的state getter mutation action 甚至是module
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值