随笔 - 312  文章 - 0  评论 - 2  阅读 - 11万

仓库Vuex

Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

vuex3.0适用于vue2.0

vuex4.0适用于vue3.0和2.0

 

引入方式

1、

安装  npm i vuex

导入  src/store/index.js:  import Vuex from "vuex"

State

1、创建state状态,状态就是那个存数据的对象

2、组件中访问数据

this.$store.state.msg

 

Getter

1、getter就就像是store的计算属性,它会传入state对象供我们操作

2、组件中访问数据

this.$store.getters.computed

Mutation

1、组件中希望更改 Vuex 的 store 中的状态(数据)的唯一方法是提交 mutation

复制代码
const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    //默认传第一个参数传state
    increment (state,obj) {
      // 变更状态
      state.count=obj.n
    }
  }
})
复制代码

 

2、组件中访问数据

this.$store.commit('increment',{n:100})

2.2 可以以一个对象的形式传入

相当于把整个对象作为了第二个参数传入mutations

this.$store.commit({
  type: 'increment',
  n:100
})

 

注意:一条重要的原则就是要记住 mutation 必须是同步处理

 

Action

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

复制代码
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state,obj) {
      state.count=obj.n
    }
  },
  actions: {
    //默认第一个参数传一个跟store一样的对象
    increment (context,obj) {
        //假设fnAsync是一个异步业务函数
        fnAsync(() => {
          context.commit('increment',obj)
        })      
    }
  }
})
复制代码

2、使用

2.1直接分发

this.$store.dispatch('increment',{n:100})

 

2.2以对象形式分发

this.$store.dispatch({
  type: 'increment',
  n:100
})

 

Module

Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter

 

posted on   香香鲲  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示