网站LOGO
L S Y 小窝
页面加载中
12月4日
网站LOGO L S Y 小窝
菜单
  • L S Y 小窝
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    vuex-getters的使用
    点击复制本页地址
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    vuex-getters的使用

    yuan · 原创 ·
    Vue · vuevuex
    共 2570 字 · 约 1 分钟 · 20251
    本文最后更新于2022年09月23日,已经过了436天没有更新,若内容或图片失效,请留言反馈

    ■Getters 我们可以理解为store仓库的一个计算属性,它的作用主要是用来派生出一些新的状态。比如我们要把state状态的数据进行一次映射或者筛选,再把这个结果重新计算并提供给组件使用。


    Getter的基本使用

    ■在state中有一个数组保存的几个学生对象

      //store\index.js
      state: {
        students:[
          {id:'1',name:'xiu',age:20},
          {id:'2',name:'fan',age:18},
          {id:'3',name:'yuan',age:23},
          {id:'4',name:'liu',age:22}
        ]
      },
    

    ■我们需要过滤掉年龄小于20岁的学生

    ■用以前的方法可以在组件中通过计算属性来过滤

    //Home.vue
    computed:{
      getStu(){
        return this.$store.state.students.filter(stu => stu.age > 20);
      }
    }
    

    ■但如果多个组件都需要获取小于20岁的学生,通过计算属性的话会写几遍完全相同的代码,这是没有意义的

    ■所以我们要通过getters来处理,getters默认将state作为第一个参数

      
      //store\index.js
      getters:{
        getStu:state =>{
          return state.students.filter(stu => stu.age > 20);
        }
      },
    
    
    //Home.vue
    <template>
      <div class="home">
        <h1>this is a home page</h1>
        <h2>{{$store.getters.getStu}}</h2>
      </div>
    </template>
    
    
    //About.vue
    <template>
      <div class="about">
        <h1>This is an about page</h1>
          <h2>{{$store.getters.getStu}}</h2>
      </div>
    </template>
    
    

    ■getter 也可以接受其他 getter 作为第二个参数:

      getters:{
        getStu:state =>{
          return state.students.filter(stu => stu.age > 20);
        },
        getNum:(state,getters) =>{
             return getters.getStu.length;
        }
    
    

    Getter的传参

    ■我们可以让getter返回一个函数来给它传参

    • 假如我们想要在store.getter.getStu时来决定获取年龄大于多少岁的学生
    • 这时候需要一个参数给getter
    • 我们可以让getter返回一个函数
    • 这样我们在store.getter.getStu时获取的是一个函数
    • 在函数中接受参数,并做处理
      getters:{
        getAge(state){
          return function (age){
              state.students.filter(stu => stu.age > age);
          }
        },
    
          //箭头函数写法
          getAge:state => (age) =>{
              return state.students.filter(stu => stu.age > age);
          },
      }
    
    
    
    
    //Home.vue
    <template>
      <div class="home">
        <h1>this is a home page</h1>
        //获取年龄大于18岁的学生
        <h2>{{$store.getters.getAge(18)}}</h2>
      </div>
    </template>
    
    

    其他vuex文章

    Vuex概念和作用解析
    vuex-mutation同步函数
    vuex-getters的使用
    vuex-actions异步函数
    vuex-modules的使用

    声明:本文由 yuan(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    此页面评论区已关闭
    博客logo L S Y 小窝 51统计 百度统计
    MOEICP 萌ICP备20232210号 ICP 赣ICP备20003060号 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 3 年 269 天 4 小时 10 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    L S Y 小窝. © 2020 ~ 2023.
    网站logo

    L S Y 小窝
     
     
     
     
    壁纸