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状态值的方法是什么?为什么?
188 1
|
7月前
|
存储
vuex5种状态?
vuex5种状态?
|
7月前
|
JavaScript 开发者
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
202 4
|
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
|
5月前
|
存储 JavaScript
VUEX 的使用学习二: state
VUEX 的使用学习二: state
37 0
|
5月前
|
存储
vuex——重置vuex数据
vuex——重置vuex数据
73 0
|
7月前
|
JavaScript
如何在Vuex中定义和使用getters和actions
在Vuex中,`getters`用于派生状态值,类似Vue的计算属性,例如从`todos`状态中过滤已完成/未完成任务。`actions`则处理异步操作,如模拟加载数据,通过`commit`改变状态。
|
7月前
|
存储 JavaScript 前端开发
vuex的5种状态
vuex的5种状态
36 0
|
7月前
|
存储
vuex 有哪几种属性?
vuex 有哪几种属性?