携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情 微信小程序支付功能
概念
Vuex是一个专为Vue开发的应用程序的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex采用类似全局对象的形式来管理所有组件的公用数据。
也可以简单来说vuex是一个数据管理库 提供统一的状态管理
vue2中
vuex里分别有state、mutation、actions、getters、modules
state是将多个组件中需要共享的数据放入其中
mutation:改变store中的数据时,使用mutation,但只能包含同步的操作,在具体组件里面调用的方式是(commit)this.$store.commit('xxxx')
actions:它也可以改变store中的数据,不过是要调用mutation里的函数间接修改store,它是异步操作,在组件中的调用方式(dispatch)this.$store.dispatch('xxx') ; 在actions里面使用的commit('调用mutation的方法')
getters是计算属性
modules是模块化,要使用namespaced:true开启命名空间,实现模块化
在vue3中
使用pinia代替vuex,原因是:pinia轻量化 --- 代码体积小,打包时体积变小,速度更快,且vuex的官方也强烈推荐新项目使用pinia,还有vue开发者工具也支持pinia
pinia配置方法只有:state、getters、actions这三种,比vue2少了两种
actions:异步任务、同步任务都可以在里面发送,因此也不用像之前一样区分同步任务还是异步任务 而v2中它只能发送异步任务
定义store:defineStore storeId是唯一标识 可以有多个store 跟modules功能一样
state:是用来存储数据的
getters:是用来计算的