ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vue3+vuex 的 getters 的 使用

2022-08-29 17:33:32  阅读:185  来源: 互联网

标签:return getters state vue3 message vuex id store


 

import { createStore } from 'vuex'

export default createStore({
  state: {
    nameVuex:'yjx',
    levelVuex:100,
    avtarURLVuex:'http',
    counterVuex:100,
    friends:[
      {id:111,name:'why0',age:20},
      {id:112,name:'why1',age:30},
      {id:113,name:'why2',age:26}
    ]
  },
  // 计算属性 参数1:state  参数2:getters
  getters: {
    // 基本使用
    counterGetter(state){
      return state.counterVuex * 2
    },

    usersAgesGetter(state){
      return state.friends.reduce((pre,item)=>{
        return pre+item.age
      },0)
    },

    // 使用其他的getters : 采用参数2
    message(state,getters){
      return `名字:${ state.nameVuex } , 等级 :${ state.levelVuex} , 朋友年龄总和 ${getters.usersAgesGetter}`
    },

    // 获取某id的朋友
    firendId(state){  
      return function(id){
        return state.friends.find(item=>item.id === id)
      }
    }
  },

  // mutations 参数1:state的  想修改state必须通过mutations来修改
  mutations: {

  },
  actions: {

  },
  modules: {

  }
})

 

app.vue 

<template>
<div class="app">
<h3>在模板中直接使用(vue2-3都可用)</h3>
计算 : {{ $store.getters.counterGetter }} <br/>
年龄 : {{ $store.getters.usersAgesGetter}} <br/>
信息 : {{ $store.getters.message}} <br/>
<!-- 根据id或者某一个朋友的信息 -->
朋友的信息 : {{ $store.getters.firendId(111) }}

<h3>vue3的写法</h3>
计算 : {{counterGetter}} <br/>
年龄 : {{usersAgesGetter}} <br/>
信息 : {{message}} <br/>
<!-- 根据id或者某一个朋友的信息 -->
朋友的信息 : {{firendId(111)}} <br/>

</div>
</template>


<script setup>

import { toRefs ,computed} from 'vue';
import { useStore } from 'vuex';
const store = useStore()

// 直接对 store.state 进行解构 => 不是响应式
// 使用 toRefs 对齐响应式
const {counterGetter,usersAgesGetter,firendId} = toRefs(store.getters)

// 针对某一个getters属性适用computed
const message = computed(()=>store.getters.message)

</script>

标签:return,getters,state,vue3,message,vuex,id,store
来源: https://www.cnblogs.com/qd-lbxx/p/16636642.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有