getters

作者: 未vv | 来源:发表于2020-03-25 14:50 被阅读0次

1.当需要从store中获取一些state变异后的状态时,可以使用getters,如获取state中的counter的平方值

  state:{
      counter:100
  },
  getters:{
    powerCounter(state){
      return state.counter * state.counter
    }
  }
 <h2>{{$store.getters.powerCounter}}</h2>

获取超过20岁的学生:
store

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    students:[
      {id:1,name:'xiaoming',age:18},
      {id:2,name:'dahei',age:21},
      {id:3,name:'qiaodan',age:40},
    ]

  },
  getters:{
    studentsMore20(state){
      return state.students.filter(s=>s.age>20)
    }
  }

})
export default store

App.vue

<template>
  <div id="app">
    <div>{{ $store.getters.studentsMore20 }}</div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {}
  }
}
</script>

getters可以作为参数,供其它getters使用

获取上面代码中年龄大于20岁的长度

getters:{
    studentsMore20(state){
      return state.students.filter(s=>s.age>20)
    },
    studentMore20Length(state,getters){
      return getters.studentsMore20.length
    }
  }
 <div>{{ $store.getters.studentMore20Length }}</div>

当getters需要传递参数时,可以通过返回一个函数来接收参数

获取年龄大于某一参数的学生

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    students:[
      {id:1,name:'xiaoming',age:18},
      {id:2,name:'dahei',age:21},
      {id:3,name:'qiaodan',age:40},
    ]

  },
  getters:{
    studentMoreAge(state){
      // return function(paramAge){
      //   return state.students.filter(s=>s.age>paramAge)
      // }
      return paramAge => state.students.filter(s=>s.age>paramAge)
    }
  }

})
export default store
<div>{{ $store.getters.studentMoreAge(21) }}</div>

mapGetters 辅助函数

mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性:

getters

export default {
  powerCount(state) {
    return state.counter * state.counter
  },
  addHello(state) {
    return state.counter + 'hello'
  }
}

store

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'

Vue.use(Vuex)

const store = new Vuex.Store({

  state: {
    counter: 10
  },
  getters

})
export default store

App.vue

<template>
  <div id="app">
    <h2>{{ $store.state.counter }}</h2>
    <div>{{power}}</div>
    <div>{{add}}</div>

  </div>
</template>

<script>
import { mapGetters } from 'vuex'
export default {
  name: 'App',
  data () {
    return {}
  },
  computed: {
    // ...mapGetters(['powerCount', 'addHello'])
    ...mapGetters({
      power: 'powerCount',
      add: 'addHello'
    })
  }
}
</script>

mapGetters 有两种写法 ,一种是数组,另一种是对象,对象的方式可以重新命名计算属性的名称

相关文章

  • getters

    1.当需要从store中获取一些state变异后的状态时,可以使用getters,如获取state中的counte...

  • Java中的this关键字

    使用pravate时通常要调用Getters和Setters方法 eclipse自动生成Getters和Setters:

  • REWORK DAY4

    Type A go-getters Eric老师夸今天继续晨读的小伙伴为Type A go-getters,这是D...

  • Vuex中的方法

    getters的使用 1、概念:当state中的数据需要经过加工后再使用时,可以使用getters加工。 ...

  • Vuex

    Vuex 1、State单一状态数 2、getters基本使用 获取state变异后的状态 getters传参 3...

  • 无标题文章

    1. 映射为计算属性 getters:接收 state 作为第一个参数,其它 getters 作为第二个参数 让 ...

  • Vuex_状态管理02(getters和mapGetters)

    什么是getters: 如果你对面向对象的变成思想理解的还可以,那么就不难理解getters。把这个概念放到实际的...

  • LomBok表达式二:Accessors

    @Accessors A more fluent API for getters and setters.@Acc...

  • vuex

    const state = { account:"", const getters = { account(st...

  • vuex

    new Vuex.Store({ state, // 状态 getters, // mutations, //...

网友评论

      本文标题:getters

      本文链接:https://www.haomeiwen.com/subject/xbloyhtx.html