vuex的原理和使用方法

news2024/9/22 23:22:44

简介

Vuex 是 Vue.js 应用的状态管理模式,它为应用内的所有组件提供集中式的状态(数据)管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。

Vuex的构成 

  • state:state 是 Vuex 的数据中心,也就是说state是用来存储数据的。

  • getters:state 对象读取方法。Vue Components 通过该方法读取全局 state 对象。

  • mutations:状态改变操作方法。 是 Vuex 修改 state 的唯一推荐方法,其他修改方式在严格模式下将会报错。 该方法只能进行同步操作, 且方法名只能全局唯一。 操作之中会有一些 hook 暴露出来, 以进行state 的监控等。

  • actions:操作行为处理模块。 负责处理 Vue Components 接收到的所有交互行为包含同步/异步操作, 支持多个同名方法, 按照注册的顺序依次触发。 向后台 API 请求的操作就在这个模块中进行, 包括触发其他 action 以及提交 mutation 的操作。 该模块提供了 Promise的封装, 以支持 action 的链式触发。

  • modules:将 Store 分割成模块,每个模块拥有自己的 State、Getters、Mutations Actions。

 Vuex的使用

1、安装         Vuex:npm install vuex

2、创建store示例

store对象

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
  }
});

在 Vue 根实例中注册store

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

在组件中使用 Store

export default {
  computed: {
    count() {
      return this.$store.state.count;
    }
  },
  methods: {
    increment() {
      this.$store.dispatch('increment');
    }
  }
};

 使用Vuex内容扩展

在真正开发中使用vuex时会有好多细节知识和注意事项,下面我们扩展一下,仅供参看

 Vue 组件中获得 Vuex 状态(State) 

方式一 this.$store.state获取

通过在根实例中注册 store 选项,该 store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到

computed: {
    count () {
        return this.$store.state.count
    }
}

 方式二mapState 辅助函数获取(推荐)

当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性

<template>
    <div>{{count}}</div>
</template>
<script>
import { mapState }from 'vuex
export default{
    computed:{
        ...mapstate(['count'])
    }
}
</script>

Getter的定义和获取方式

定义getters:

需要显示所有大于5的数据,正常的方式,是需要list在组件中进行再一步的处理,但是getters可以帮助我们实现它

【下面getters引用的state中的数据:list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]】

getters: {
    // getters函数的第一个参数是 state
    // 必须要有返回值
    filterList:  state =>  state.list.filter(item => item > 5)
}

获取getters:

方式一: 通过属性访问

this.$store.getters.filterList

方式二:辅助函数 - mapGetters 

<template>
    <div>{{filterList}}</div>
</template>
<script>
import { mapGetters }from 'vuex
export default{
    computed:{
        ...mapGetters(['filterList'])
    }
}
</script>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【生成式人工智能-十一一个不修改模型就能加速语言模型生成的方法】

一个加速语言模型生成的方法 现在语言模型的一个弊端speculative decoding预言家预测的问题 speculative decoding 模块的实现方法NAT Non-autoregressive模型压缩使用搜索引擎 一些更复杂些的speculative decoding 实现方式 speculative decoding 是一个适用于目前生成模型的加…

软件运维实施维保方案(Doc完整版原件)

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产…

NodeJS:查看、设置 nodejs 堆内存

一、查看nodejs 堆内存 vite.config.ts 从Node.js v10.0.0开始&#xff0c;v8模块被引入&#xff0c;允许你访问V8引擎的一些内部特性&#xff0c;包括堆内存统计信息。 import v8 from v8 // 可用内存总量 console.log(Total available heap size: ${v8.getHeapStatistics()…

2024年优秀的网站建设公司推荐

如今&#xff0c;高达 48% 的用户认为&#xff0c;判断企业信誉的首要因素是其网站设计。我整理了一份 2024 年全球顶级网站设计公司名单。 企业为什么要投资网站设计和开发&#xff1f; 数字平台或社交媒体在当前情况下取得了飞跃&#xff0c;帮助企业上以数字方式推广他们的…

【数据结构】顺序表——赋源码(结尾)

目录 1. 线性表 2. 顺序表 2.1 概念与结构 2.2 分类 2.2.1 静态顺序表 2.2.2 动态顺序表 2.3 动态顺序表的实现 正文 1. 线性表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构&#x…

停止项目大小调整,开始搜索层自动缩放!

作者&#xff1a;来自 Elastic Matteo Piergiovanni&#xff0c;John Verwolf 我们新的 serverless 产品的一个关键方面是允许用户部署和使用 Elastic&#xff0c;而无需管理底层项目节点。为了实现这一点&#xff0c;我们开发了搜索层自动扩展&#xff0c;这是一种根据我们将在…

华为路由的AAA是什么?

1.AAA及用户管理概述 华为路由的AAA是Authentication(认证)、‌Authorization(授权)和Accounting(计费)的简称&#xff0c;‌是一种提供认证、‌授权和计费的安全管理机制。‌ AAA作为一种网络安全管理机制&#xff0c;‌主要提供以下功能和服务&#xff1a;‌ 认证&#xff…

Linux系统编程:线程 1

1.线程的概念 线程——轻量级的进程&#xff0c;线程是CPU执行的最小单位&#xff0c;进程是资源分配的基本单位&#xff0c;线程的创建和调度的时空开销都比进程小&#xff1b; 2.线程的组成 线程组成&#xff1a;线程pid&#xff0c;程序计数器&#xff0c;寄存器集合&…

pdf文件密码忘记,有办法可以打开pdf文件吗?

为确保PDF文件的重要信息不轻易外泄&#xff0c;我们一般会给pdf文件设置打开密码&#xff0c;确保pdf文件的隐私与安全&#xff0c;但随着时间的推移&#xff0c;让我们遗忘了原本设置的密码&#xff0c;这时我们该怎么办呢&#xff1f; 当大家遇到这种情况时&#xff0c;可能…

箱号/柜号是什么?各种单据处理有没有省力的办法?

集装箱编号&#xff0c;作为全球独一无二的标识符&#xff0c;其结构严谨且信息丰富。该编号由四部分构成&#xff1a;首先是三个字母组成的箱主代码&#xff0c;这代表了集装箱的拥有者&#xff0c;即船公司或租箱公司的专属标识&#xff1b;紧接着是固定字母“U”&#xff0c…

SpringBoot快速入门(自动创建)

目录 前言 步骤 1 创建项目 2 选择生成器springBoot 3 修改后&#xff0c;如图所示 4 点击下一步 5 点击Web----SpringWeb 6 点击创建 6.1 如果发生报错如: 6.2 替换合适版本&#xff0c;等待重新加载 7 添加contronller类 7.1 添加HelloController 类 8 ​​创建…

Linux驱动入门实验班——SR501红外模块驱动(附百问网视频链接)

目录 一、工作方式 二、接口图 三、编写思路 1.构造file_operations结构体 2.实现read函数 3.编写入口函数 4.编写中断处理函数 5.编写出口函数 6.声明出入口函数以及协议 四、源码 五、课程链接 一、工作方式 SR501人体红外感应模块有两种工作模式&#xff1a; …

PMP和软考高项知识的重叠和差异

PMP和高项是项目管理证书&#xff0c;备考了高项之后&#xff0c;也可以参加PMP考试&#xff0c;今天我们就来说一说PMP和高项知识的重叠度以及差异。&#xff08;文末PMP资料&#xff09; 一、知识体系的重叠 1、 项目管理过程 PMP和高项都强调项目管理的全过程&#xff0c;包…

电脑屏幕录制指南,2024四大免费录屏软件推荐!

无论是制作教学视频、录制在线课程、捕捉游戏精彩瞬间&#xff0c;还是进行远程技术支持&#xff0c;一款优秀的录屏软件都是必不可少的工具。今天&#xff0c;我们就来聊聊几款免费且功能强大的录屏软件。 Foxit录屏大师 链接&#xff1a;www.foxitsoftware.cn/REC/ Foxit录…

BGP 反射器联邦实验

要求&#xff1a; 1.如图连接网络&#xff0c;合理规划IP地址&#xff0c;AS 200内IGP协议为OSPF 2.R1属于AS 100&#xff1b;R2-R3-R4小AS 234 R5-R6-R7小AS 567&#xff0c;同时声明大AS 200&#xff0c;R8属于AS 300 3.R2-R5 R4-R7 之间为联邦EBGP邻居关系 4.R1-R8之…

实时捕捉与追溯:得物基于 eBPF 打造云上网络连接异常摄像头

近期我们容器 SRE 团队基于 eBPF 技术建设网络连接异常感知能力&#xff0c;灰度上线过程中发现了生产环境 10 以上的应用配置错误、程序 Bug 等问题。在和应用负责同学同步风险过程中&#xff0c;大家都挺好奇我们如何实现在对应用无侵入的情况下发现服务连接异常的。本篇文档…

贷齐乐hpp+php特性注入

文章目录 运行过程waf第一层waf拦截第二层waf拦截 数据库查询语句注入思路注入 运行过程 foreach ($_REQUEST as $key > $value) {$_REQUEST[$key] dowith_sql($value);}$request_uri explode("?", $_SERVER[REQUEST_URI]);if (isset($request_uri[1])) {$rewr…

77.游戏分析工具计算数据偏移

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;76.游戏分析工具读取内存存到对象数据分析器一 以它的代码为基础进行修改 COBJContext…

免费领取 | S-SDLC差距分析2024发布会,服务名额先到先得

​2024全新版S-SDLC研发安全能力成熟度模型即将发布&#xff01;可帮助企业进一步引入行业最佳实践&#xff0c;弥补安全开发能力短板&#xff0c;快速提升软件安全开发整体水平。 8月15日&#xff0c;我们将开启直播&#xff0c;正式发布2024全新版S-SDLC研发安全能力成熟度模…

代码随想录算法训练营第十五天

力扣题部分: 110.平衡二叉树 题目链接:. - 力扣&#xff08;LeetCode&#xff09; 题面: 给定一个二叉树&#xff0c;判断它是否是平衡二叉树 平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1 思路(递归): 还是递归三部曲(关于三部曲的具体内容和对递归看法建议可见昨…