什么是vuex ?
专为 Vue.js 应用程序开发的 状态管理模式 ,其实就是一个第三方存数据的仓库
vuex的特点
-
Vuex的基础api
state 就是一个存数据的地方,类似react组件中的state
- mutations 是用来存放修改state值的方法
- actions 一般异步方法都写在这个里面
- 我们推荐修改数据尽量使用mutations来,因为actions虽然也能修改数据,但是subscribe方法只能监听当使用mutations里面方法修改数据的时候
- subscribe 当vuex里面state中的数据发生变化他都会监听到
- getters 类似于vue组件中的computed,这里面的方法一般都是生成动态数据的
- plugins 用来配置比如说数据持久化,打印日志
- modules 用来合并模块的,类似于redux中的combinreducers
Vuex中这些api如何使用
import { mapMutations , mapGetters , mapActions , mapState } from 'vuex'methods: {...mapMutations(['方法名1','方法名2'])...mapActions(['方法名1','方法名2'])// 多种写法,推荐对象写法...mapActions({getAllComment: "comment/getAllComment",addComment: "comment/addComment",}),}computed:{...mapState(['数据名']),...mapState({// 组件中的名字 因为使用了module管理模块,所以需要点模块名来取值commentList: state => state.comment.commentList}),...mapGetters(['方法名1','方法名2'])}
state中的数据和getter中的数据必须写在computed中才能使用 , mutations和actions中的数据必须写在methods中
Vuex中打印日志的插件
import { createLogger } from 'vuex'plugins: [createLogger()]
vuex 的监听函数
// subscribe 是用来监听 store -> state 的数据发生改变时,出发的函数// 这个函数的出发条件必须是 mutation 发生改变之后store.subscribe((mutation, state) => {// 每次 mutation 之后调用// mutation 的格式为 { type, payload }console.log(mutation, state);// 可以对 state 的更新做一次处理// 本地存储})
