使用vuex的state状态对象的5种方式

使用 Vuex 的 state 状态对象的 5 种方式如下:

1. 直接在组件中读取

Vuex 的 state 状态对象保存了应用中大部分的共享状态,组件可以直接从 state 中读取数据。例如,我们有一个保存用户名的 state,在组件中可以这样读取:

<template>
  <div>
    {{ username }}
  </div>
</template>

<script>
import { mapState } from 'vuex';
export default {
  computed: mapState({
    username: state => state.username,
  }),
};
</script>

这里使用了 Vuex 提供的 mapState 快捷工具,相当于在 computed 属性中声明一个函数,从 state 对象中提取数据,然后在模板中使用。

2. 辅助函数

除了读取 state 的数据,还有一些 Vuex 的辅助函数可以方便地处理 state 状态。例如:

import { mapGetters, mapMutations, mapActions } from 'vuex';

export default {
  computed: {
    // 映射 store 中的 getters,可以直接调用
    ...mapGetters([
      'getUserName',
      'getAge',
    ]),
  },
  methods: {
    // 映射 store 中的 mutations,只能同步调用
    ...mapMutations([
      'updateUserName',
    ]),
    // 映射 store 中的 actions,可以异步调用
    ...mapActions([
      'getUserInfo',
    ]),
  },
}

这里使用了 Vuex 提供的三个辅助函数:mapGettersmapMutationsmapActions 快捷工具,相当于在 computed 和 methods 属性中声明一些函数,方便调用 Vuex 的 getters、mutations 和 actions。

3. 使用带命名空间的辅助函数

如果将 Vuex 的 state 分模块组织,我们需要加上命名空间,在组件内部调用时必须标明模块的名称。例如:

import { mapState, mapActions } from 'vuex';

// users 模块的 state 对象
const usersState = {
  namespaced: true,
  state: {
    userList: [],
  },
  actions: {
    fetchUserList() {
      // 发起请求,获得用户数据
    },
  },
};

export default {
  computed: mapState('users', {
    userList: state => state.userList,
  }),
  methods: mapActions('users', [
    'fetchUserList',
  ]),
};

这里使用了带命名空间的 mapStatemapActions 快捷工具,使用 users 作为命名空间,方便地访问带命名空间的 state 和 actions。

4. 使用 $store.state 直接读取

组件也可以通过 $store.state 直接读取 state 对象的值。例如:

export default {
  computed: {
    username() {
      return this.$store.state.username;
    },
  },
  methods: {
    updateUsername(name) {
      this.$store.commit('updateUsername', name);
    },
  },
};

在 computed 属性中使用 $store.state.username 直接读取 state 对象的值;在 methods 中使用 $store.commit('updateUsername', name) 来调用 mutations,修改 state 的值。

5. 使用 Vuex 的辅助函数创建局部状态

如果有些组件的状态只在组件内使用,可以使用 Vuex 的辅助函数 createNamespacedHelpers 创建局部状态。例如:

import { createNamespacedHelpers } from 'vuex';

const { mapState, mapActions } = createNamespacedHelpers('users');

export default {
  computed: mapState({
    userList: state => state.userList,
  }),
  methods: mapActions([
    'fetchUserList',
  ]),
};

这里使用 createNamespacedHelpers 创建了命名空间为 users 的局部状态,并返回了 mapStatemapActions 辅助函数,用于访问和操作 users 模块的 state 和 actions。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用vuex的state状态对象的5种方式 - Python技术站

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

相关文章

  • vue+canvas绘制时间轴的方法

    下面是关于”vue+canvas绘制时间轴的方法”的详细攻略: 前置技能 在学习”vue+canvas绘制时间轴的方法”之前,需要了解以下前置技能: Vue.js框架的基本使用 HTML5中canvas标签的基本使用 JavaScript中处理时间的基本方法 实现步骤 1. 准备工作 首先我们需要打开一个vue项目,并引入canvas标签,在我们的vue组件…

    Vue 2023年5月29日
    00
  • Vue-cli项目获取本地json文件数据的实例

    下面是我给出的Vue-cli项目获取本地json文件数据的完整攻略: 1. 创建Vue-cli项目 首先我们要创建一个Vue-cli项目。具体的步骤可以参考Vue-cli官方文档。 2. 创建本地JSON文件 接下来我们需要创建本地JSON文件用于存储我们的数据。在项目目录下创建一个data目录,再在data目录下创建一个example.json文件,用来存…

    Vue 2023年5月28日
    00
  • Vue数字输入框组件示例代码详解

    下面我来详细讲解「Vue数字输入框组件示例代码详解」的完整攻略: 1. 简介 此篇文章介绍了一个基于Vue.js的数字输入框组件代码,包含了组件的使用和原理分析。该组件可以通过点击增加或减少数字的值,并且支持通过键盘输入数字。 2. 示例说明 以下为组件代码示例: 组件模板代码 <template> <div class="num…

    Vue 2023年5月27日
    00
  • vue 实现网页截图功能详解

    下面是对“vue 实现网页截图功能详解”的完整攻略。 一、需求及思路 1. 需求 实现在页面中对一个区域的截图功能。 2. 思路 在页面中实现选区功能,即用户在页面中拖拽鼠标来选取截图区域。 实现截图功能,即将选取的区域转化为图片并进行保存。 二、实现选区功能 1. 选区的实现 选区的实现可以使用 vue-cropperjs 插件来进行。 安装依赖: npm…

    Vue 2023年5月28日
    00
  • 详解VUE的状态控制与延时加载刷新

    详解VUE的状态控制与延时加载刷新 在Vue中,状态控制和延时加载刷新是非常常见的需求。下面我将针对这两个问题进行详细讲解。 状态控制 在Vue中,状态控制可以通过data属性来进行。对于一个组件内需要使用的状态变量,我们可以先在data对象中定义: data() { return { count: 0, message: ‘Hello Vue!’ } } …

    Vue 2023年5月29日
    00
  • vue3+vite+axios 配置连接后端调用接口的实现方法

    下面是详细的讲解“vue3+vite+axios 配置连接后端调用接口的实现方法”的完整攻略。 1. 环境搭建 首先需要安装Node.js和Vue-CLI脚手架工具,可以通过以下命令安装: # 安装Node.js https://nodejs.org/ # 安装Vue CLI npm install -g @vue/cli 2. 创建项目 可以使用Vue C…

    Vue 2023年5月28日
    00
  • 使用Element+vue实现开始与结束时间限制

    使用Element UI和Vue.js实现开始时间和结束时间限制的过程如下: 步骤一:安装Element UI库 在项目目录的命令行中运行以下命令来安装Element UI库: npm install element-ui -S 步骤二:引入Element UI组件 在Vue.js项目的main.js中引入Element UI组件: import Vue f…

    Vue 2023年5月28日
    00
  • vue 实现小程序或商品秒杀倒计时

    当需要在网站中实现小程序或商品秒杀倒计时功能时,可以使用 Vue.js 框架来进行实现。这里提供一个完整的攻略,介绍如何使用 Vue.js 实现这个功能。 步骤一:安装 Vue.js 首先需要安装 Vue.js,在命令行中输入以下命令: npm install vue 安装完成之后,可以在 HTML 中引入 Vue.js: <script src=&q…

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