vuex

vuex 是什么?

  1. vuex是一个专为vue.js 应用程序开发的状态管理模式。它采用集中式存储和管理程序的所有组件的数据

  2. vuex核心?

state 所有数据都存储在state中 state是一个对象
actions 只能调用mutations的方法 是一个异步方法
mutations可以直接操作state中的数据
getters 类似于计算属性可以对state中的数据做一些逻辑操作
modules 将仓库分模块存储

  1. vuex 运行机制图

  2. 在这里插入图片描述

  3. 代码演示

获取到state中的数据有两种方法 这两种都能获取变量

1`. 使用映射的方法

import { mapGetters } from 'vuex' //引入mapGetters

在computed 用…获取变量

  computed: {
    ...mapGetters(["count"])
  },

2 . 直接在差值表达式里写

    <button>+</button>
      <!-- {{count}} -->
       <p>{{$store.state.count}}</p> 
    <button>-</button>

4 . 改变count的值代码演示
如果是同步操作 直接在mutations修改
第一步添加点击事件

    <button @click="addup">+</button>
    	<!-- {{count}} -->
	   <p>{{$store.state.count}}</p> 
    <button>-</button>

第二步通过commit把事件名参数传过去

  methods: {
    addup(){
      this.$store.commit("addup",1) // 第一个参数是事件 第二个参数是要加的数量
    }
  },

第三步在mutations中修改数据

  mutations: {
    addup(state, num) {
      state.count += num
    }
  },

如果是异步操作就要通过dispatch 在actions中通过commit 在mutations中修改数据
第一步

  <div>
    <button @click="addup">+</button>
       <!-- {{count}} -->
       <p>{{$store.state.count}}</p> 
    <button @click="reduce">-</button>
  </div>

第二步


```javascript
  methods: {
    reduce(){
      this.$store.dispatch('reduce', 1)
    }
  },

第三步

  actions: {
    reduce({ commit }, num) {
      commit('reduce',num)
    }
  },

第四步

  mutations: {
    reduce(state, num) {
      setTimeout(()=>{
        state.count -= num
      },4000) 
    }
  },
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值