谈谈 Vuex
是什么
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,可以方便的实现组件之间数据的共享
核心概念的名字和作用
Store 是个大容器,包含以下所有内容
State 用来读取状态,带有一个 mapState 辅助函数
Getter 用来读取派生状态,附有一个 mapGetters 辅助函数
Mutation 用于同步提交状态变更,附有一个 mapMutations 辅助函数
Action 用于异步变更状态,但它提交的是 mutation,而不是直接变更状态
Moudule 用来 store 划分模块,方便维护代码
常见追问:Mutation 和 Action 为什么要分开? 答案:为了让代码更易于维护。
怎么做
import {createApp} from 'vue'
import {createStore} from 'vuex'
// 创建一个新的store实例
const store = createStore({
state(){
return {
count:0
}
},
mutations:{
increment(state){
state.count++
}
}
})
// store.commit('increment')
// console.log(store.state.count) // -1
const app = createApp({/* 根组件 */})
// 将store实例作为插件安装
app.use(store)
methods:{
increment(){
this.$store.commit('increment')
console.log(this.$store.state.count)
}
}
缺点
- vuex 没有持久化存储的手段,每次刷新都会重置所有的数据,vuex 中的 state 会重新变为初始状态
- 如果要开发的应用足够简单,Vuex 可能就显得相对繁琐冗余,不适合使用