【Vuex---状态管理器的使用】

Vuex是Vue.js应用的状态管理工具,用于集中式管理组件共享状态。它包含state、mutations、actions、getters和modules等核心概念。在Vuex中,组件通过actions触发异步操作,然后通过mutations同步更新state。getters用于计算衍生状态。当构建中大型单页应用,涉及多个组件共享状态时,Vuex成为理想选择。辅助函数如mapState、mapGetters、mapMutations和mapActions简化了Vuex的使用。
摘要由CSDN通过智能技术生成

一、Vuex是什么?

Vuex在Vue项目开发时使用的状态管理工具。简单来说,就是对Vue的应用中多个组件的共享状态进行集中式的管理(读/

  • Vuex实现了一个单向数据流,在全局拥有一个State存放数据,当组件要更改State中的数据时,必须通过Mutation进行,Mutation同时提供了订阅者模式供外部插件调用获取State数据的更新。
  • 而当所有异步操作(常见于调用后端接口异步获取更新数据)或批量的同步操作需要走Action,但Action也是无法直接修改State的,还是需要通过Mutation来修改State的数据。最后,根据State的变化,渲染到视图上。

二、什么时候使用Vuex

适用场景: 构建一个中大型单页应用,可能会考虑如何更好地在组件外部管理状态,即多个组件共享状态:

  • 多个视图依赖于同一状态:此时传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。
  • 来自不同视图的行为需要变更同一状态:此时采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝,通常会导致无法维护的代码
    在这些情况下就适合用Vuex进行全局单例模式管理

三、Vuex的核心概念和API

流程:View -> Actions -> Mutations -> State -> View

在这里插入图片描述

1、state

(1)vuex 管理的状态对象:vuex的基本数据,用来存储变量
(2)它应该是唯一的

 state: {
   
    userId: '',
    name: '',
    token: '',
  }

在vue中使用 this.$store.state.userId

2、 mutations

mutation:提交更新数据的方法,必须是同步的(如果需要异步使用action)。每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。

  mutations: {
   
    SET_USER: (state, userId) => {
   
      state.userId = userId
    },
    SET_TOKEN: (state, token) => {
   
      // console.log(token)
      state.token = token
    }
  },

commit:同步操作,写法: this.$store.commit(‘mutations方法名’,值)
例如:

	this.$store.commit('SET_USER','123456')

3、 actions

actions:和mutation的功能大致相同,不同之处在于 ==>

  1. Action 提交的是 mutation,而不是直接变更状态。
  2. Action 可以包含任意异步操作。

3.通过执行: commit()来触发 mutation 的调用, 间接更新 state
4.谁来触发: 组件中通过this.$store.dispatch(‘action 名称’, data1) (dispatch:异步操作)
5.可以包含异步代码(axios)

  actions: {
    // {} 是es6中解构,把对象解构成属性
    login({
     commit }, value) {
   
      commit('SET_USER', value)
      // commit('SET_TOKEN', value2)
    },
    }

4、 getters

getters:从基本数据(state)派生的数据,相当于state的计算属性,具有返回值的方法
谁来读取: 组件中: this.$store.getters.xxx

  getter: {
   
    userIdDouble: function(state){
   
      retur
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值