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

简介: 上篇文章讲解了vuex基础,本文简介vuex中一些方法的使用

前言

上篇文章给大家讲了什么是Vuex以及Vuex的核心特点,这篇文章就带大家了解实际项目中如何使用Vuex。

vuex定义state

如下图,App.vue中我们引用了两个子组件。

在这里插入图片描述
然后我们在store中定义一个数据,让两个组件都能访问到
store/index.js

import { createStore } from 'vuex'

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

在创建项目的时候选上Vuex,项目初始化之后就会有store文件。因为它自动在main.js中进行了全局挂载,所以我们可以直接在组件中进行访问
one.vue:直接通过$store.state.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计算属性

上面是直接在页面的template中可以通过$store.state.things获取到值,但往往我们需要对值进行监听,所在在computed中,但是在script中无法用以上方法获取到值,来看看怎么实现:

one.vue:

<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>

我们需要引入vuex提供的useStore,利用它实例一个store对象。然后就可以通过store.state.things访问到值

通过getter获取全局状态

上面我们讲了通过state获取全局状态,来看看如何通过getter获取全局状态

在store/index.js中创建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: {
  }
})

然后在组件一的template中,我们可以通过$store.getters.getProducts获取到值。那么getters和state这两种方法有啥不同呢?在getters中我们可以对数据进行处理:
下面新增了一个resetProducts方法,在名字前后加上了 **

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

然后到组件一中,我们使用$store.getters.resetProducts获取到值。
这样我们可以在getters中对初始数据进行统一的微调,方便组件进行使用

在这里插入图片描述

相关文章
|
7月前
Vuex中改变store状态值的方法是什么?为什么?
Vuex中改变store状态值的方法是什么?为什么?
189 1
|
7月前
|
存储
vuex5种状态?
vuex5种状态?
|
4月前
|
存储 JavaScript API
Vuex的魔法宝典:掌握State, Getters, Mutations和Actions,让状态管理不再是难题
【8月更文挑战第27天】Vuex是Vue.js应用程序的状态管理工具,通过集中式存储管理组件状态并确保状态按照预定义的规则发生变化。
161 0
|
2月前
|
存储 监控 JavaScript
Vuex 中 State 的作用
【10月更文挑战第15天】State 是 Vuex 状态管理体系中的核心组成部分,它为应用提供了可靠的数据共享和管理机制,保障了应用的正常运行和良好体验。理解和正确使用 State 是掌握 Vuex 状态管理的关键,对于构建复杂、高效的 Vue 应用具有重要意义。
|
2月前
|
监控 JavaScript
Vuex学习二:Vuex的重点属性学习,state、mutations、getters、actions、module。
这篇文章是关于Vuex状态管理库的深入学习,涵盖了其核心概念如state、getters、mutations、actions和modules,并通过实例代码展示了它们的使用和重要性。
36 1
|
2月前
|
前端开发 JavaScript 调度
React 组件状态(State)
10月更文挑战第8天
35 1
|
5月前
|
存储 JavaScript
VUEX 的使用学习二: state
VUEX 的使用学习二: state
37 0
|
5月前
|
存储
vuex——重置vuex数据
vuex——重置vuex数据
74 0
|
7月前
|
存储 JavaScript 前端开发
vuex的5种状态
vuex的5种状态
38 0
|
7月前
|
JavaScript
Vue状态管理:什么是getters?Vuex中的getters有什么作用?
Vue状态管理:什么是getters?Vuex中的getters有什么作用?
270 3