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日

相关文章

  • 使用Webpack 搭建 Vue3 开发环境过程详解

    使用Webpack搭建Vue3开发环境的过程可以分为以下几个步骤: 1.安装Webpack和Vue3依赖 在开始使用Webpack搭建Vue3开发环境之前,我们需要先安装Webpack和Vue3的相关依赖。 Webpack是一个打包工具,可以将多个JavaScript、CSS、HTML等文件打包成一个或多个JavaScript文件。在搭建Vue3开发环境时,…

    Vue 2023年5月28日
    00
  • vue中过滤器filter的讲解

    Vue中过滤器Filter的讲解 Vue中的 Filter 可以用来格式化输出内容,例如格式化日期、货币、大小写等。 Filter 本质上就是一个方法,它接收一个输入值,经过处理后返回一个输出值。以下是 Filter 的基本使用方法和示例说明。 基本使用方法 在 Vue 组件选项中声明 filters 对象,可以包含多个自定义 Filter 函数。示例: V…

    Vue 2023年5月27日
    00
  • 原生JS改变透明度实现轮播效果

    好的!原生JS改变透明度实现轮播效果的攻略如下: 一、准备工作 在HTML文件中创建一个包含图片的轮播容器,如下所示: <div class="slider"> <img src="./image1.jpg" alt="image1"> <img src=".…

    Vue 2023年5月28日
    00
  • vue-cli创建的项目中的gitHooks原理解析

    首先,讲解“vue-cli创建的项目中的gitHooks原理解析”需要了解以下几个概念: git hooks:是一种在特定事件发生时,Git 自动执行脚本的机制,可以用它来自定义钩子函数,在 Git 事件发生时触发执行。 vue-cli:是一个脚手架工具,用于快速创建 Vue 项目,提供了一系列的预设配置,可以快速搭建 Vue 项目的基本框架。 husky:…

    Vue 2023年5月29日
    00
  • 如何在JS文件中获取Vue组件

    在JS文件中获取Vue组件可以使用Vue.js提供的一个方法Vue.component。这个方法可以注册一个全局的组件,以便在JS中使用。 以下是详细的攻略: 步骤一:在Vue组件中定义组件名称 首先,在Vue组件中定义组件名称,这个名称需要在JS文件中进行获取。 示例代码如下: <template> <div> <h1>…

    Vue 2023年5月28日
    00
  • Vue中util的工具函数实例详解

    Vue中util的工具函数实例详解 在Vue中,utils工具函数是非常重要的一部分。它们能够帮助我们更加方便地进行Vue组件开发,并提高我们的开发效率。本文将详细讲解Vue中util的工具函数种类、使用方法和实例。 Vue中util的工具函数种类 Vue的utils工具函数主要包括以下几种类型: 样式处理相关的工具函数:包括kebabCase、camelC…

    Vue 2023年5月28日
    00
  • vue.js实现三级菜单效果

    当使用vue.js框架时,实现三级菜单效果需要多个步骤。以下是其中的几个关键步骤: 步骤一:定义Vue实例中的数据结构 定义一个vue实例,包含一个数组,数组每个元素表示一个菜单项,该数组每个元素还包含以下属性: id:唯一标识该菜单项,每个菜单项的id值必须唯一。 name:表示该菜单项的名称。 children:表示该菜单项包含的子菜单,该属性的值同样是…

    Vue 2023年5月28日
    00
  • vue-router钩子函数实现路由守卫

    下面为你详细讲解Vue Router钩子函数实现路由守卫的完整攻略。 钩子函数介绍 Vue Router提供了多个钩子函数,可以在路由发生变化时执行一些操作。以下是常用的钩子函数: beforeEach(to, from, next) :进入路由之前触发,next必须调用,才能进入下一个钩子。其中参数to和from分别表示即将进入的路由和即将离开的路由。 a…

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