Getter

概念:

Getter 用于 对 Store 中的数据进行加工处理形成新的数据。
不修改 store 中的原数据,只起到包装数据的作用。

  1. getter 可以对 Store 中已有的数据进行加工处理之后形成新的数据,类似 Vue 中的计算属性。
  2. Store 中的数据 发生变化,getter 的数据也会跟着变化。

    定义 getters

    1. state: {
    2. todos:{
    3. {id:1, text:'111', done: true},
    4. {id:2, text:'222', done: false}
    5. }
    6. }
    7. getters:{
    8. doneToods: state =>{ // 普通的getter,类似计算属性
    9. return state.todos.filter(todo => todo.done)
    10. }
    11. getTodoById:(state) => (id) =>{
    12. // 通过给 getter返回一个函数,来实现给 getter 传参
    13. return state.todos.find(todo => todo.id === id )
    14. }
    15. // 高阶函数的形式:两个连续的 箭头函数,如上
    16. get(state){
    17. return function(id){
    18. return todo.id === id
    19. }
    20. }
    21. }
    js 中的多个连续的箭头函数与柯里化
    高阶函数定义:将函数作为参数或者返回值是函数的函数。

    使用方式:

    第一种方式:通过方法访问
    1. this.$store.getters.xxx

    getter 在通过方法访问时,每次都会去进行调用,而不会缓存结果。

第二种方式: mapGetters 辅助函数

  1. import { mapGetters } from 'vuex'
  2. computed: {
  3. ...mapGetters(['xxx'])
  4. }