当前位置: 首页 > article >正文

Vue 状态管理工具vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 解决了多个组件共享状态时,状态的可维护性和可预测性问题。

Vuex 的核心概念

  1. State(状态)
    Vuex 使用单一状态树(Single Source of Truth),即用一个对象就包含了全部的应用层级状态。这意味着,每个应用将仅仅包含一个 store 实例。单一状态树让我们能够直接地定位任一状态片段,在调试过程中也能轻易地取得整个当前应用状态的快照。

  2. Getters(获取器)
    store 的计算属性,允许我们从 store 的 state 中派生出一些状态。

  3. Mutations(变更)
    Vuex 中的 mutations 非常类似于事件:每个 mutation 都有一个字符串的事件类型 (type) 和一个回调函数 (handler)。这个回调函数就是我们实际进行状态更新的地方,并且它会接受 state 作为第一个参数。

  4. Actions(动作)
    Action 提交 mutation,而不是直接变更状态。Action 可以包含任意异步操作。

  5. Modules(模块)
    由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。为了解决这个问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter,甚至是嵌套子模块——从上至下进行同样方式的分割。

使用 Vuex 的步骤

  1. 安装 Vuex
    如果你使用 npm,可以通过以下命令安装 Vuex:

    npm install vuex --save
    
  2. 创建 Store
    创建一个新的 .js 文件(例如 store.js),并在其中引入 Vue 和 Vuex,然后定义和导出 Vuex store。

  3. 在 Vue 应用中使用 Store
    在 Vue 应用中,通过 Vue 的实例选项 store 使用这个 store。

  4. 在组件中使用 State、Getters、Mutations 和 Actions

    • 使用 this.$store.state.xxx 来访问 state。
    • 使用 mapStatemapGettersmapMutationsmapActions 辅助函数在组件中更简洁地访问这些 Vuex 特性。

示例

store.js

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  actions: {
    increment({ commit }) {
      commit('increment');
    }
  },
  getters: {
    count: state => state.count
  }
});

main.js

import Vue from 'vue';
import App from './App.vue';
import store from './store';

Vue.config.productionTip = false;

new Vue({
  store,
  render: h => h(App)
}).$mount('#app');

组件中

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex';

export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapActions(['increment'])
  }
};
</script>

Vuex 提供了结构化和可预测的状态管理,非常适合构建大型的单页应用(SPA)。通过集中管理应用的状态,Vuex 使得状态管理变得更加简单和可维护。


http://www.kler.cn/a/388416.html

相关文章:

  • JSON-RPC-CXX深度解析:C++中的远程调用利器
  • python: postgreSQL using psycopg2 or psycopg
  • 【pytorch】常用强化学习算法实现(持续更新)
  • Oracle 11g rac 集群节点的修复过程
  • 拦截器实现http请求访问本地图片
  • JavaEE进阶----SpringMVC(三)---响应的获取
  • 贪心算法:经典活动安排问题
  • 【人工智能训练师】7 大数据处理与应用
  • Java什么是变量?变量有什么用?
  • MongoDB新版本,单节点安装
  • 【网络安全 | 服务器】Nginx功能快速入门
  • python视频事物分析
  • AMD-OLMo:在 AMD Instinct MI250 GPU 上训练的新一代大型语言模型。
  • C#语言在软件开发中的应用与优势
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 认证通过(附题目)
  • Vue 中的定时刷新与自动更新实现
  • Android Framework 框架层主要功能类的基本介绍
  • 「QT」几何数据类 之 QPolygonF 浮点型多边形类
  • 第十六章 TCP 客户端 服务器通信
  • 关于若依500验证码问题的求助
  • WPS Office手机去广高级版
  • PostgreSQL pg-xact(clog)目录文件缺失处理
  • MyBatis5-缓存
  • SpringBoot中使用Thymeleaf模板引擎
  • C# 选择导入文件的路径、导出文件的路径
  • [vulnhub] DarkHole: 1