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中对初始数据进行统一的微调,方便组件进行使用

在这里插入图片描述

相关文章
|
5月前
Vuex中改变store状态值的方法是什么?为什么?
Vuex中改变store状态值的方法是什么?为什么?
152 1
|
5月前
|
存储
vuex5种状态?
vuex5种状态?
|
5月前
|
JavaScript 开发者
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
109 4
|
5月前
|
前端开发 数据处理 开发者
vuex中mutations详解,与actions的区别
Vuex 的 Mutations 是用于改变 Vuex Store 中状态的一种方式。它是一个同步的操作,用于直接修改 Store 中的状态。
|
2月前
|
存储 JavaScript API
Vuex的魔法宝典:掌握State, Getters, Mutations和Actions,让状态管理不再是难题
【8月更文挑战第27天】Vuex是Vue.js应用程序的状态管理工具,通过集中式存储管理组件状态并确保状态按照预定义的规则发生变化。
64 0
|
3月前
|
存储 JavaScript
VUEX 的使用学习二: state
VUEX 的使用学习二: state
28 0
|
3月前
|
存储
vuex——重置vuex数据
vuex——重置vuex数据
52 0
|
5月前
|
JavaScript
如何在Vuex中定义和使用getters和actions
在Vuex中,`getters`用于派生状态值,类似Vue的计算属性,例如从`todos`状态中过滤已完成/未完成任务。`actions`则处理异步操作,如模拟加载数据,通过`commit`改变状态。
|
5月前
|
存储 JavaScript 前端开发
vuex的5种状态
vuex的5种状态
26 0
|
5月前
|
JavaScript
Vue状态管理:什么是getters?Vuex中的getters有什么作用?
Vue状态管理:什么是getters?Vuex中的getters有什么作用?
141 3