Vuex从了解到实际运用(二)——获取vuex中的全局状态(state getters)

news/2024/7/7 19:26:41

vuex从了解到实际运用——获取vuex中的全局状态state getters

  • 知识回调(不懂就看这儿!)
  • 场景复现
  • 项目实战
    • vuex定义一个store实例
    • 在store中定义数据
    • 在组件中获取值
    • vuex的计算属性
    • 通过getters获取全局状态
    • state和getters获取全局状态的区别

知识回调(不懂就看这儿!)

知识专栏专栏链接
Vuex知识专栏https://blog.csdn.net/xsl_hr/category_12158336.html?spm=1001.2014.3001.5482
Vuex从了解到实际运用(一)彻底搞懂什么是Vuexhttps://blog.csdn.net/XSL_HR/article/details/130522551
【Vuex快速入门】vuex基础知识与安装配置https://blog.csdn.net/XSL_HR/article/details/128515917

有关Vuex的相关知识可以前往Vuex知识专栏查看复习!!
vuex官方文档传送门

场景复现

上期文章介绍了vuex是什么和vuex的一些核心特点,本期文章将以项目实战为主,上手使用vuex

项目实战

vuex定义一个store实例

首先定义两个组件,分别为One.vue和Second.vue,将两个组件挂载到App.vue组件下。
在这里插入图片描述

在store中定义数据

接下来我们在store中定义数据,使得两个小组件都能访问到store里的值。

import { createStore } from 'vuex'

export default createStore({
  state: {
    things:[
      {name: "张三", age:"18"},
      {name: "李四", age:"17"},
      {name: "王五", age:"20"},
    ]
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

注意使用store实例时,需要提前创建store实例

  • 可以选择在项目初始化时勾选vuex,这样项目初始化成功后,store实例会被直接挂载到全局的main.ts或者main.js文件内。
  • 有的初始化工具无法选择vuex,则需要我们手动导入和挂载。
    在这里插入图片描述

在组件中获取值

分别在One.vue和Second.vue组件中,通过$store.state.things获取到值(这里是因为在store中定义的数据名为things,需要根据变量名按要求获取数据)

<template>
  <div class="one">
    组件一
    <ul>
        <li v-for="item in $store.state.things" :key="item">
            <span>{{item.name}}</span>
            <span>{{item.age}}</span>
        </li>
    </ul>
  </div>
</template>

此时我们可以看看运行出来的效果:👇👇👇
在这里插入图片描述

vuex的计算属性

上面的操作主要是直接通过$store.state.things来获取到值,但是我们往往需要对值进行实时监听和更新,所以此时我们需要vuex的计算属性——computed,但是在script中无法用以上的方法获取到值,下面我们来看看解决办法:👇👇👇

<template>
  <div class="one">
    组件一
    <ul>
        <li v-for="item in things" :key="item">
            <span>{{item.name}}</span>
            <span>{{item.age}}</span>
        </li>
    </ul>
  </div>
</template>

<script setup>
import { computed } from "vue"
import { useStore } from "vuex"
const store = useStore()
const things = computed(() => store.state.things)
</script>

计算属性是非常常用的,可以将更多的逻辑层代码放在script中进行编写,优化代码结构。
不过,使用计算属性之前,我们需要先引入vuex提供的useStore,利用它实例化一个store对象,然后对store对象进行操作,访问到我们需要的值。

此时我们可以看看运行出来的效果:👇👇👇
在这里插入图片描述

通过getters获取全局状态

上面我们介绍了如何通过state来获取全局状态,下面我们来尝试用另一种方法——getter来获取全局状态

首先我们需要在store中创建getter👇👇👇

import { createStore } from 'vuex'
export default createStore({
  state: {
    things:[
      {name: "张三", age:"18"},
      {name: "李四", age:"17"},
      {name: "王五", age:"20"},
    ]
  },
  getters: {
    getProducts: (state) => {
      return state.things
    }
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

getters中我们定义了一个新的方法getProduct,此时在组件的代码中,就可以在script中引入并调用这个方法。

$store.getters.getProducts

state和getters获取全局状态的区别

state和getters都能够获取到全局状态,那么二者有什么区别呢?

  • state只能够获取到全局状态,并不能对状态数据进行微调
  • getters既能获取到全局状态,还能对数据进行调整

下面我们在getters中新增一个resetProducts方法,在每个数据的前面贴上>>>

getters: {
    getProducts: (state) => {
      return state.things
    },
    resetProducts: (state) => {
      return state.things.map((things) => {
        return {
          name: `>>>${things.name}`
        }
      })
    }
  },

此时我们来看看调用此方法之后的效果:👇👇👇
在这里插入图片描述
很显然,getters中调用的方法既能够获取到全局的状态数据,而且更灵活,能够根据需求对全局的状态进行处理。一般将数据处理的方法放在getters中,将各个组件的功能进行组件化,保证父组件的层次结构清晰明了。


以上就是关于实现通过getters和state获取vuex的全局状态的知识分享,相信看完这篇文章的小伙伴们一定能运用这些方法在项目开发中。当然,可能有不足的地方,欢迎大家在评论区留言指正!

下期文章将介绍vue最新状态管理工具Pinia的入门知识~
感兴趣的小伙伴可以订阅本专栏,方便后续了解学习~
觉得这篇文章有用的小伙伴们可以点赞➕收藏➕关注哦~

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1102171.html

相关文章

【边缘设备】yolov5训练与rknn模型导出并在RK3588部署(亲测有效)

保姆级教程&#xff0c;看这一篇就够用了 环境准备 将宿主机和开发板接入同一个局域网&#xff0c;方便开发。 宿主机 PC电脑&#xff0c;x86_64, 带显卡, 配置不表, 能训练和开发即可。系统&#xff1a; ubuntu 22.04 LTS 版本( ubuntu 18.04 LTS 以上)自带的远程软件&…

从 PC 解锁 Android 手机的 6 种有效方法

在这个数字时代&#xff0c;手机已成为我们生活的重要组成部分。我们将它们用于各种用途&#xff0c;从跟踪我们的工作和社交日程到与亲人交流。 然而&#xff0c;有时我们的手机会成为令人沮丧的源头&#xff0c;尤其是当我们不小心将自己拒之门外时。但是您知道可以使用计算…

正则表达式匹配密码(字符串)

正则表达式匹配密码&#xff08;字符串&#xff09; 验证字符串至少由4种字符组成且长度大于等于8。 实例如下&#xff1a; import java.util.regex.Matcher; import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String input &quo…

搭建Stable Diffusion WebUI详细过程

文章目录 1、环境搭建1.1、GPU服务器选择1.2、配置服务器环境 2、源码和模型下载3、安装依赖库文件4、运行项目5、视频教程 1、环境搭建 为了方便&#xff0c;这里直接选择Vultr提供的已安装Anaconda的Ubuntu 22.04系统。 如果你自己电脑有足够的显存&#xff0c;你也可以在自…

30. Kubernetes 核心组件讲解——Scheduler

本章讲解知识点 Scheduler 概述Scheduler 原理分析Scheduler 旧版本的两阶段调度流程Scheduler Framework1. Scheduler 概述 Kubernetes Scheduler 是 Kubernetes 集群中的一个核心组件,用于将 Pod 调度到适合的 Node 上运行。在 Kubernetes 中,Pod 是最小的可调度单元,而 …

2023年开源社项目委员会介绍

2023 项目委员会成员 项目委员会主席&#xff1a;石垚 &#xff08;tech-querykaiyuanshe.org&#xff09; 项目委员会秘书 &#xff1a;丁文昊 &#xff08;dingwenhaokaiyuanshe.org&#xff09; 开源社官网项目组&#xff1a; 组长&#xff1a;石垚 &#xff08;tech-queryk…

从小学习编程的路线与编程进阶

对于从小学习编程的学生&#xff0c;通常会从基础的编程概念和语法开始学习。以下是一个可能的路线&#xff1a; 1. 学习计算机基础知识&#xff0c;包括计算机硬件、操作系统和网络等基本概念。 2. 掌握基本的编程概念和语法&#xff0c;例如变量、数据类型、条件语句和循环语…

IP协议的相关特性

IP协议的相关特性 &#x1f50e;地址管理动态分配NATIPv6 &#x1f50e;IP 地址的组成网络主机号的划分IP 地址分类(A, B, C, D, E)子网掩码特殊的 IP 地址 &#x1f50e;路由选择 图片来自网络 &#x1f50e;地址管理 IP地址, 本质上是一个32位的整数 通常会把32位的整数, 转…