vuex的基本属性和用法

文章类型:Vue

发布者:admin

发布时间:2023-03-19

一定义:

1: 是应用开发的一种状态管理模式,

2:本身具有一个“数据库”的作用,作为数据中心集中式存储数据,类似于是一个仓库,仓库里放了很多对象。 state 就是数据源存放地,从 store 读取数据,若是 store 中的数据改变,依赖的组件也会发生更新,通过 mapState 把全局的 state 和 getters 映射到当前组件的 computed 计算属性,更多地用于解决跨组件通信数据共享。

二属性:

1:state:统一定义公共数据,单一状态树,仅包含一个store 实例。里面存放的数据是响应式的,从 store 读取数据,若是 store 中的数据发生改变,组件也会发生更新。通过 mapState 把全局的 state 和 getters 映射到当前组件的 computed 计算属性

 state: {
title: 'hello world'
},

2:mutations:更改store中的状态的唯一方法(同步执行)

 mutations: {
SET_TITLE (state, _title) {
state.title = _title
}
},

3:getters:对 state 进行计算操作,在组件内也可以做计算属性, getters 可以在多给组件之间复用,如果一个状态只在一个组件内使用,是可以不用 getters

 getters={
//这里我加了一个返回值
count(state){
console.log(state.count)
return state.count
}
}

4:actions:异步操作,提交的是 mutation,而不是直接变更状态,(异步请求数据后提交)

actions: {
setAsyncTitle (context, title) {
axios.get(`/api/get-title?title=${title}`).then(resp => {
context.commit('SET_TITLEX', resp.data)
})
}
},

5:modules:当管理的状态比较多时;将store对象分割成模块(modules),方便管理

 modules: {
a: moduleA,
b: moduleB
}

三场景:

1:组件之间全局共享的数据

2:通过后端异步请求的数据(贴合实际需求)

四:优势

1:数据的存取集中,不需要层层传递

2:数据的流动清晰

3:数据都是响应式的

五:缺点

1:刷新数据丢失,恢复为初始状态

解决方案:

1:vuex-persistedstate、vuex-along插件

2:借用浏览器存储localStorage、sessionStorage

3:数据丢失的页面重新发送actions、mutations请求

4:监听浏览器刷新前事件,在浏览器刷新之前就把vuex里的数据保存至sessionStorage中,刷新成功后如果异步请求的数据还没返回则直接获取sessionStorage里的数据,否则获取vuex里的数据。(刷新后还取到后台数据,才会从sessionStorage里取。确保数据的安全性)