Vuex拿到state中数据的3种方式与实例剖析

来详细讲解“Vuex拿到state中数据的3种方式与实例剖析”。

1. 3种获取state数据的方式

Vuex中,我们可以通过以下3种方式来获取state中的数据:

1.1 在组件中通过$store.state.xxx获取

通过在组件中访问$store.state.xxx,可以获取到store中某个模块的state数据,举个例子:如果我们想拿到store中名称为“user”的模块的state数据,可以在组件中这样写:

this.$store.state.user.xxx

其中xxx为该模块中state中的属性名。

1.2 在组件中通过mapState函数获取

mapState函数是Vuex提供的一种简化获取state数据的方法,可以将该模块下的若干个属性“映射”到组件的计算属性中。使用mapState,我们只需要在组件中引入该函数,并在计算属性中声明需要“映射”的属性即可。举个例子:如果我们想拿到store中名称为“user”模块的state数据中的username属性和password属性,可以在组件中这样写:

import { mapState } from 'vuex'
...
computed: {
  ...mapState('user', ['username', 'password'])
}

这样,在该组件中,我们便可以通过this.username和this.password来访问store中该模块的对应属性值。

1.3 在组件中通过getters获取

getters是Vuex中的计算属性,它的作用是对state中的数据进行二次处理,返回一个新的值。我们可以在getters中声明处理state中数据的方法,并在组件中访问该方法来获取数据。举个例子:如果我们想通过获取store中名称为“user”的模块的state数据来获取一个用户的当前状态信息,那么我们可以这样写:

在store文件中:

const state = {
  user: {
    status: 'online', // 当前在线状态
    username: 'vuejs', // 用户名
    ...
  }
}
const getters = {
  currentStatus: state => state.user.status
}

这里声明了一个获取用户当前状态的getters方法,接着在组件中访问这个方法:

import { mapGetters } from 'vuex'
...
computed: {
  ...mapGetters('user', ['currentStatus'])
}

通过这样的方法,我们便可以在组件中通过this.currentStatus获取到该用户的在线状态信息了。

2. 示例说明

上述3种方法只是比较简单的介绍,下面通过两个实际的代码示例来说明。

2.1 示例1

该示例为在Vue组件中获取store中的数据:

<template>
  <div>
    <h2>{{ username }}的个人资料</h2>
    <p>电话:{{ phone }}</p>
    <p>地址:{{ address }}</p>
  </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState({
      username: state => state.user.username,
      phone: state => state.user.phone,
      address: state => state.user.address
    })
  }
}
</script>

这里使用了mapState来将store中的state数据映射到了当前组件的计算属性中,从而在组件中访问任何一个state数据只需要使用this.xxx即可。

2.2 示例2

该示例为在store的getters方法中对数据进行二次处理:

const store = new Vuex.Store({
  state: {
    count: 0
  },
  getters: {
    addTen(state) {
      return state.count + 10
    },
    double(state) {
      return state.count * 2
    }
  }
})

这里声明了两个getters方法,一个是addTen方法,在原始count值上加10;另一个是double方法,在原始count值上乘以2。对于这两个方法的调用,在组件中使用$store.getters.addTen和$store.getters.double即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vuex拿到state中数据的3种方式与实例剖析 - Python技术站

(1)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue项目之ES6装饰器在项目实战中的应用

    这里给出完整攻略。 Vue项目之ES6装饰器在项目实战中的应用 一、ES6装饰器基础概念 ES6装饰器是ES6的一个新特性,允许我们在一个类或者一个类的属性或方法前面添加一个装饰器函数来改变这个类的行为。 简单来说,装饰器是一种自定义的函数,可以对指定的对象进行重新定义、包装、修饰等操作。 二、ES6装饰器的用法 2.1 类装饰器 类装饰器通常用于添加类的静…

    Vue 2023年5月28日
    00
  • vue 中简单使用mock的示例代码详解

    下面是“vue 中简单使用mock的示例代码详解”的完整攻略。 1、什么是Mock? Mock是一种基于规则自动生成数据模拟的工具,常用于代码调试以及前后端分离开发环境中数据接口的测试。Mock通过配置生成模拟数据,并可以实现前后端分离开发流程中前端提前获取数据模型,更好地完成页面的实现。 2、Mock.js介绍 Mock.js是一款前后端分离开发中常用的模…

    Vue 2023年5月28日
    00
  • Vue3.x的版本中build后dist文件中出现legacy的js文件问题

    Vue 3.x的版本中build后dist文件中出现legacy的js文件问题,是由于在Vue 3.x的版本中,开发团队加入了 Webpack 5 的新特性—— 模块还原 /esModule,这些变化导致了一些旧版浏览器中无法兼容这些新特性,因此需要生成一个legacy版本的js文件来兼容这些浏览器。 以下是如何解决这个问题的完整攻略: 1.修改 packa…

    Vue 2023年5月28日
    00
  • Vue监视数据的原理详解

    我给您详细讲解一下“Vue监视数据的原理详解”的完整攻略。 什么是数据监视 在Vue中,我们通常使用数据绑定来显示和更新数据,但是Vue还提供了一个非常重要的功能——数据监视。它可以让我们监视一个数据变化的过程,从而实现对数据的精细处理。 数据监视的原理 Vue通过利用JavaScript的对象的getter和setter方法,来实现对数据的监视。 我们知道…

    Vue 2023年5月28日
    00
  • 如何解决ElementPlus的el-table底白线问题

    解决Element Plus的el-table底白线问题可以通过修改CSS样式来完成。步骤如下: 第一步:查看el-table的底部样式 通过浏览器的开发者工具,可以查看到el-table的底部样式,它的CSS类名是.el-table__body-wrapper::after。默认情况下,该样式设置了一个底部白线,并且高度为1像素,颜色为#e4e7ed。 第…

    Vue 2023年5月28日
    00
  • Vuex unknown action type报错问题及解决

    问题描述在使用Vuex管理状态时,当我们调用一个未定义的action时,会出现以下错误提示:[vuex] unknown action type: xxx。 解决方法当出现此错误时,我们应该先检查代码中是否存在拼写错误等语法问题。如果没有发现明显的问题,那么我们可能需要查看代码的逻辑结构。 在使用Vuex时,通常会先定义state和mutations,然后再…

    Vue 2023年5月28日
    00
  • vue实现table表格里面数组多层嵌套取值

    下面就是具体的步骤。 步骤 首先,在table组件中,需要在columns中定义表格的列信息,每个列的field属性对应每一行数据的字段名。 javascript columns: [ {label:’ID’,field:’id’}, {label:’用户名’,field:’userName’}, {label:’手机号码’,field:’phone’}, …

    Vue 2023年5月29日
    00
  • 解决vue中el-date-picker type=daterange日期不回显的问题

    下面是针对“解决vue中el-date-picker type=daterange日期不回显的问题”的完整攻略: 1. 问题描述 在使用vue中的element-ui组件库时,我们可能会遇到这样的问题,即el-date-picker控件中type属性设置为daterange时,选择日期后无法正确回显。这种问题可能会造成用户困扰,降低用户体验度。 2. 解决方…

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