vue3在setup中使用mapState解读

 更新时间:2023年04月19日 08:36:45   作者:mrhaoxiaojun  
这篇文章主要介绍了vue3在setup中使用mapState方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue3 setup使用mapState

mapState和computed结合在Vue3版本中使用,广大网友写了很多,这里只做一个实战后的应用笔记,不多赘述

创建一个hook

hooks/useMapState.ts

import { computed } from "vue"
import { mapState, useStore } from "vuex"
export default function (state:any) {
    // 1. 获取实例 $store
    const store = useStore()
    // 2. 遍历状态数据
    const storeStateFns = mapState(state)
    // 3. 存放处理好的数据对象
    const storeState = {}
    // 4. 对每个函数进行computed
    Object.keys(storeStateFns).forEach(fnKey => {
        const fn = storeStateFns[fnKey].bind({ $store: store })
        // 遍历生成这种数据结构 => {name: ref(), age: ref()}
        storeState[fnKey] = computed(fn)
    })
    return storeState
}

使用

<script lang="ts" setup>

import useMapState from "@/hooks/useMapState"

const myState:any = useMapState({
  includeList: (state: any) => state.keepAlive.includeList
})
const { includeList } = myState
</script>

vue3 setup语法糖中使用mapState

在Vue的组件中,要想使用Vuex中的多个State,我们经过会借助mapState辅助函数进行获取值,但是在Vue3中,通过computed的来获取多个值的方法官方并未提供,话不多说,直接上代码。

useMapState.js

import { computed } from "vue";
import { mapState, useStore } from "vuex"

export const useMapState = (getKeys) => {

    const store = useStore();
    
    const storeState = {}
    const storeFns = mapState(getKeys)

    Object.keys(storeFns).forEach((fnKeys) => {
        const fn = storeFns[fnKeys].bind({$store: store})
        storeState[fnKeys] = computed(fn)
    })

    return storeState
}

在setup函数中使用

<script>
import { useMapState } from ''./Hooks/useMapState.js'

export default {
    setup() {
        const storeState = useMapState(['title', 'counter'])

        return {
            ...storeState
        }
    }
}

</script>

在setup语法糖中由于不能使用 return进行返回,所以只能按照如下方式写了

在setup语法糖中使用

<script setup>
import { useMapState } from ''./Hooks/useMapState.js'

const { title, counter } = useMapState(['title', 'counter'])

</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 简单学习5种处理Vue.js异常的方法

    简单学习5种处理Vue.js异常的方法

    这篇文章主要介绍了简单学习5种处理Vue.js异常的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • vue计算属性及使用详解

    vue计算属性及使用详解

    计算属性就是模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。这篇文章主要介绍了vue计算属性详解,需要的朋友可以参考下
    2018-04-04
  • vue中动态绑定表单元素的属性方法

    vue中动态绑定表单元素的属性方法

    下面小编就为大家分享一篇vue中动态绑定表单元素的属性方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • 在Vue中使用this.$store或者是$route一直报错的解决

    在Vue中使用this.$store或者是$route一直报错的解决

    今天小编就为大家分享一篇在Vue中使用this.$store或者是$route一直报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 深入探索Vue3.x中的七大高级用法

    深入探索Vue3.x中的七大高级用法

    Vue3.x 自发布以来,凭借其性能的显著提升和更加灵活的组合式 API,已经成为了现代前端开发的重要工具之一,除了基本用法外,Vue3.x 还提供了许多高级功能,本文将和大家一起深入探索Vue3.x中的七大高级用法,需要的朋友可以参考下
    2024-03-03
  • 让ChatGPT解读Vue3源码过程解析

    让ChatGPT解读Vue3源码过程解析

    这篇文章主要为大家介绍了让ChatGPT解读Vue3源码过程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 一文教你学会在Vue3中自定义指令

    一文教你学会在Vue3中自定义指令

    这篇文章主要为大家详细介绍一下如何在Vue3中实现自定义指令,文中的示例代码讲解详细,具有一定的借鉴价值,需要的同学可以参考一下
    2022-07-07
  • 详解VUE调用本地json的使用方法

    详解VUE调用本地json的使用方法

    这篇文章主要介绍了VUE调用本地json的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 基于vue2.0动态组件及render详解

    基于vue2.0动态组件及render详解

    下面小编就为大家分享一篇基于vue2.0动态组件及render详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue组件生命周期三个阶段全面总结讲解

    Vue组件生命周期三个阶段全面总结讲解

    Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期
    2022-11-11

最新评论