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

yizhihongxing

来详细讲解“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简介、引入、命令式与声明式编程详解

    Vue简介 Vue是一款渐进式的JavaScript框架,由尤雨溪开发。Vue的目标是通过更简单、更快速的方式来构建用户界面,在增强web应用开发效率、降低技术人员的学习成本、并确保高效的性能方面表现出色。 Vue特点: 轻量级框架,代码量小,执行效率高 易于学习和使用,拥有清晰的文档和注重开发体验的社区 渐进式框架,可以逐步使用, 或集成到其他系统中使用 …

    Vue 2023年5月27日
    00
  • Vue实现手机号、验证码登录(60s禁用倒计时)

    首先,这篇攻略将分为三个部分来讲解, 第一部分:介绍如何使用Vue构建登录表单 第二部分:介绍如何在Vue中添加倒计时功能 第三部分:介绍如何使用Vue和后端API实现手机号、验证码登录。 第一部分:用Vue构建登录表单 使用Vue编写登录表单需要先新建一个Vue实例,可以通过以下代码来创建并挂载Vue实例。 <script src="htt…

    Vue 2023年5月29日
    00
  • vue中 this.$set的使用详解

    Vue中 this.$set的使用详解 在Vue中,我们通常使用data属性来存储组建的数据,同时也可以使用this关键字来访问这些数据。然而,当我们需要动态地添加或更新对象属性时,Vue的响应式系统并不会像我们期望的那样自动更新,而是需要使用this.$set方法。 什么是this.$set 在Vue中,当一个对象被添加到Vue实例的data属性里时,Vu…

    Vue 2023年5月27日
    00
  • vue 多入口文件搭建 vue多页面搭建的实例讲解

    下面是详细讲解”vue 多入口文件搭建 vue多页面搭建的实例讲解”的攻略: 1. 前置条件 为了搭建 Vue 多入口文件,你需要确保以下工具 已经安装: Node.js:安装最新版本代码和 npm 包 Vue CLI:用于创建 Vue 应用程序的命令行工具 2. 创建 Vue 应用程序 使用 Vue CLI 创建一个新的 Vue 应用程序: vue cre…

    Vue 2023年5月28日
    00
  • Vue防抖与节流的使用介绍

    我来为你详细讲解“Vue防抖与节流的使用介绍”的完整攻略,请仔细阅读以下内容: 什么是防抖和节流 在介绍防抖和节流之前,我们先来了解一下两个重要概念: 函数调用频率:函数被调用的次数。比如说,你在搜索框中输入关键字,搜索框会实时检索结果,此时,输入的操作就是函数,它被调用的频率就是你输入的频率。 函数执行时间:函数运行所需的时间。比如说,你在网页上点击一个按…

    Vue 2023年5月29日
    00
  • Vue中的nextTick作用和几个简单的使用场景

    下面是关于Vue中的nextTick作用和几个简单的使用场景的详细讲解: 什么是nextTick? nextTick是Vue提供的一个异步API,它可以在dom更新之后执行指定的代码。在Vue中,当数据发生变化时,首先会用异步的方式把虚拟DOM重新渲染,然后再修改真实的DOM元素,这是一个异步的过程。但是,有时候我们需要在DOM更新后才能进行某些操作,例如更…

    Vue 2023年5月29日
    00
  • uniapp自定义弹框的方法

    下面我将详细讲解uniapp自定义弹框的方法。 1. 弹框组件编写 在uniapp项目中,我们可以自定义一个弹框组件,以实现自定义弹框的效果。首先,在components目录下创建一个名为customDialog的组件文件夹,然后将该组件注册到全局: // 在main.js中注册 import customDialog from ‘@/components/…

    Vue 2023年5月28日
    00
  • Vue2实现组件props双向绑定

    下面我将详细讲解如何在Vue2中实现组件props的双向绑定。 1. Vue2中props的单向绑定 Vue2中的props是单向绑定的,即父组件可以向子组件传递数据,但是子组件不能直接修改父组件传递的props。在子组件中默认情况下只能读取父组件传递的props值,如果想要修改这些值,需要通过事件的形式在子组件中触发父组件传递的方法来实现。 下面是一个示例…

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