学习笔记之Vuex的用法总结(Vue状态管理)

yizhihongxing

学习笔记之Vuex的用法总结(Vue状态管理)

什么是Vuex?

Vuex是一个专为Vue.js开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex让我们的状态管理更简单清晰。

Vuex的基本概念

在使用Vuex之前,需要了解一些基本概念。

State(状态)

Vuex使用单一状态树,也就是用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源”而存在。这也意味着,每个应用将仅仅包含一个 store 实例。

Getter(获取器)

有时候我们需要从 store 中的 state 中派生出一些状态,例如对列表进行过滤并计数,可以使用 Getter。

Getter 可以被看作是 store 中的计算属性,Getters 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

Mutation(变更)

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件,每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。

注意:不能异步调用 mutation 函数。

Action(异步变更)

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

Module(模块)

当多人协同开发大型项目时,为了避免各个组件之间命名冲突,可以使用模块功能。

每个模块拥有自己的 state、mutation、getter、action 和 module。可以多重嵌套。

Vuex的使用

安装

通过npm安装Vuex:

npm install vuex --save

导入和使用

在 main.js 中导入并使用 Vuex:

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

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  getters: {
    evenOrOdd: state => state.count % 2 === 0 ? 'even' : 'odd'
  }
})

new Vue({
  el: '#app',
  store,
  methods: {
    increment () {
      this.$store.commit('increment')
    }
  },
  computed: {
    count () {
      return this.$store.state.count
    },
    evenOrOdd () {
      return this.$store.getters.evenOrOdd
    }
  }
})

在这个例子中:

  • 通过 Vuex.Store 创建一个 store。
  • state 定义了一个名为 count 的状态和一个初始值 0
  • mutations 定义了一个名为 increment 的 mutation,用于增加 count 的值。
  • getters 定义了一个名为 evenOrOdd 的 Getter,用于计算 count 的奇偶性。
  • 通过 store 选项将 store 注入到根组件中。
  • methods 中的 increment 方法通过 this.$store.commit 方法提交名为 increment 的 mutation。
  • computed 中的 countevenOrOdd 计算属性通过 this.$store.state.countthis.$store.getters.evenOrOdd 获取 store 中的状态和 Getter。

Getter示例

const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: 'Buy milk', done: true },
      { id: 2, text: 'Go to gym', done: false },
      { id: 3, text: 'Hang out with friends', done: false },
      { id: 4, text: 'Learn Vue.js', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    },
    undoneTodos: state => {
      return state.todos.filter(todo => !todo.done)
    }
  }
})

在这个例子中,doneTodosundoneTodos 这两个 Getter 会分别返回做完和没做完的 todos。

Action示例

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    incrementAsync ({ commit }) {
      setTimeout(() => {
        commit('increment')
      }, 1000)
    }
  }
})

在这个例子中,incrementAsync 这个 Action 会等待 1 秒后再提交 mutation,实现异步增加 count 的功能。

至此,Vuex的基本概念和使用方法已经全部讲述完毕。后续还有更深入的内容,可以查阅官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:学习笔记之Vuex的用法总结(Vue状态管理) - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • MSN帐号格式以及MSN用户名格式的详细介绍

    MSN帐号格式以及MSN用户名格式的详细介绍 MSN帐号格式 MSN帐号是指用于登录MSN网络服务的帐号,其格式为:帐号名称@网址后缀。其中,帐号名称可以是任意字符,必须包含字母和数字,长度不超过64个字符;网址后缀必须为hotmail.com、live.com或outlook.com中的一种。 下面是两个MSN帐号格式的例子: john_doe_123@o…

    other 2023年6月27日
    00
  • 电脑蓝屏怎么解决?电脑蓝屏修复方法

    电脑蓝屏问题解决攻略 电脑蓝屏是指电脑突然停止工作并显示蓝色屏幕,通常是由于系统或硬件问题所导致。本文将介绍电脑蓝屏的修复方法和解决攻略。 一、重启计算机 电脑蓝屏后,首先要尝试的是重启计算机,因为很多时候蓝屏只是暂时的问题,重启可以恢复系统。 二、检查硬件设备 如果重启无效,那么就需要检查机器的硬件设备是否工作正常。首先可以检查一下硬盘是否有故障,具体方法…

    other 2023年6月27日
    00
  • Java封装统一的Result Model案例

    Java封装统一的Result Model是一种常见的编码规范,通常用于统一处理API接口的响应数据。本文将为大家提供完整的攻略,涵盖该编码规范的详细说明和使用示例。 1. 什么是Java封装统一的Result Model Java封装统一的Result Model是一种约定俗成的编码规范,它通过封装响应数据的格式,使得API接口的响应数据具有统一的标准格式…

    other 2023年6月25日
    00
  • C++中vector容器使用详细说明

    C++中vector容器使用详细说明 1. 简介 vector是一个类似于动态数组的容器,能够存储任意类型的数据,提供了访问和遍历元素的方法。与数组不同的是,vector的大小可以动态变化,可以随时添加或删除元素。vector是标准模板库(STL)的一部分,因此可以与其他STL容器,例如list、map和set一起使用。 2. 基本使用 2.1 vector…

    other 2023年6月26日
    00
  • Mysql数据表分区技术PARTITION浅析

    Mysql数据表分区技术PARTITION浅析 MySQL 数据库在处理大量数据时,会遇到一些性能瓶颈,分区技术是一种优化查询性能的方法。该技术是将一个大的数据表分成多个小的数据表,从而提高开发和查询效率。在本篇文章中,我们将介绍如何使用PARTITION子句进行数据表分区的设计和实现。 PARTITION子句的语法 在MySQL中,使用PARTITION子…

    other 2023年6月26日
    00
  • mysql时间与字符串之间相互转换

    MySQL时间与字符串之间相互转换 MySQL 是一款使用广泛的关系型数据库管理系统,时间和日期是其常用数据类型之一。在 MySQL 中,可以通过各种函数和关键字来进行时间和字符串之间的相互转换。本文将介绍一些常用的 MySQL 时间和字符串相互转换方法。 时间转字符串 在 MySQL 中将时间转换成字符串有许多方法,其中最常用的是 DATE_FORMAT …

    其他 2023年3月28日
    00
  • IIS 7.0 部署MVC

    IIS 7.0 部署MVC 在使用ASP.NET MVC架构开发Web应用程序时,最关键的部分之一就是程序的部署。本文将介绍如何在IIS 7.0上部署MVC应用程序。 准备工作 在开始部署之前,需要确保以下环境已经准备就绪: IIS 7.0已安装 ASP.NET MVC运行时已安装 部署包已生成 操作步骤 将部署包文件复制到Web服务器上的特定目录中,例如”…

    其他 2023年3月28日
    00
  • 后缀名.dat是什么文件格式,dat文件用什么打开?

    后缀名为.dat的文件是一种通用的数据文件格式,它不属于特定的应用程序或数据类型。.dat文件通常用于存储二进制数据或未经格式化的文本数据。由于.dat文件没有特定的结构或规范,因此打开这种文件需要根据具体情况选择适当的工具或应用程序。 以下是两个示例说明: 示例一:使用文本编辑器打开.dat文件 首先,尝试使用文本编辑器打开.dat文件。常见的文本编辑器包…

    other 2023年8月5日
    00
合作推广
合作推广
分享本页
返回顶部