vuex-3-actions

简介: 写几遍 思路更加清晰了 ,理解也更透彻了欢迎大家一起学习交流

1.前言


写几遍 思路更加清晰了 ,理解也更透彻了

欢迎大家一起学习交流


2. what  actions


Action 类似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接变更状态。

Action 可以包含任意异步操作


3. 上代码


组件内 使用

这样写 分的清楚 mutationAction

待会 用辅助函数

Action 通过 store.dispatch方法触发:

注意不要拼错

Ascy 异步

Sy 同步


methods: {
    changeStoreNumSy() {
      this.$store.commit("reduceSync", { num: 2 });
    },
    changeStoreNumASy() {
      this.$store.dispatch("reduceAscync");
    },
  },

store.js


state: {
    num:8,
},
  mutations: {
    reduceSync(state,obj){
      // state.num -= obj.num
      setTimeout(()=>{
          // 模拟数据请求
          // 不能进行异步更新
         state.num -= obj.num  
      },1000)
    }
  },
  // 类似于 mutaion
  actions: {
//  commit参数 等价于这个 var {commit} = context
    reduceAscync({commit }){
      setTimeout(() => {
        commit('reduceSync', {num:5})
      }, 1000);
    }
// 第二种写法
    // 异步的递减 context 类似store对象
   // reduceAscync(context){
    //   setTimeout(() => {
    //     context.commit('reduceSync', {num:5})
    //   }, 1000);
    // }
  },

乍一眼看上去感觉多此一举,我们直接分发 mutation 岂不更方便?为啥还要通过 action 周转下呢 ?

因为 mutation 必须同步执行

Action 就不受约束!我们可以在 action 内部执行异步操作


4. 辅助函数写法


23SX7)W6SOQ8AFON$~`T6}L.png

注意

1.引入别忘了


import {mapMutations} from "vuex"
import { mapActions } from 'vuex'
  1. actions的辅助函数参数 是对象 需要加一个 key
  2. 调用的时候 用这个 key




相关文章
|
前端开发 JavaScript BI
轻松搞定vue3+Pinia-2-修改state-patch-actions
轻松搞定vue3+Pinia-2-修改state-patch-actions
266 0
|
8月前
|
前端开发 数据处理 开发者
vuex中mutations详解,与actions的区别
Vuex 的 Mutations 是用于改变 Vuex Store 中状态的一种方式。它是一个同步的操作,用于直接修改 Store 中的状态。
|
30天前
|
JavaScript API 数据处理
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
121 3
|
3月前
|
监控 JavaScript
Vuex学习二:Vuex的重点属性学习,state、mutations、getters、actions、module。
这篇文章是关于Vuex状态管理库的深入学习,涵盖了其核心概念如state、getters、mutations、actions和modules,并通过实例代码展示了它们的使用和重要性。
54 1
|
5月前
|
JavaScript
成功解决:[vuex] must call Vue.use(Vuex) before creating a store instance.
这篇文章介绍了在使用Vue和Vuex时遇到的一个常见错误:"[vuex] must call Vue.use(Vuex) before creating a store instance." 错误的原因是在使用顺序上出现了问题,即在创建store之前没有正确地声明使用vuex。文章提供了详细的解决方法,即将`Vue.use(Vuex)`直接放在`store/index.js`文件中,以确保在创建store实例之前Vuex已经被Vue使用。通过这种方式,问题得到了成功解决。
成功解决:[vuex] must call Vue.use(Vuex) before creating a store instance.
|
6月前
|
监控 JavaScript
VUEX 使用学习三 : mutations
VUEX 使用学习三 : mutations
37 0
|
前端开发 API
vue3中Pinia的使用之actions
vue3中Pinia的使用之actions
|
8月前
|
JavaScript
如何在Vuex中定义和使用getters和actions
在Vuex中,`getters`用于派生状态值,类似Vue的计算属性,例如从`todos`状态中过滤已完成/未完成任务。`actions`则处理异步操作,如模拟加载数据,通过`commit`改变状态。
|
8月前
|
JavaScript
vuex如何在actions中传递参数
在Vuex的`actions`中传递参数可以提高其灵活性和复用性。