Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

vue mapgetters

作者:花折亦无情   发布日期:2026-07-06   浏览:24

// store.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: 'Learn JavaScript', done: true },
      { id: 2, text: 'Learn Vue', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done);
    }
  }
});

export default store;

// MyComponent.vue
<template>
  <div>
    <ul>
      <li v-for="todo in doneTodos" :key="todo.id">{{ todo.text }}</li>
    </ul>
  </div>
</template>

<script>
import { mapGetters } from 'vuex';

export default {
  computed: {
    // 使用对象展开运算符将 getter 混入 computed 对象中
    ...mapGetters([
      'doneTodos' // 将 `this.doneTodos` 映射为 `this.$store.getters.doneTodos`
    ])
  }
};
</script>

解释说明

  1. Vuex Store:

    • store.js 文件中,我们定义了一个 Vuex store,其中包含一个 todos 数组作为状态。
    • getters 中定义了一个名为 doneTodos 的 getter,它返回所有已完成的待办事项。
  2. 组件使用 mapGetters:

    • MyComponent.vue 文件中,我们通过 import { mapGetters } from 'vuex'; 引入了 mapGetters 函数。
    • computed 属性中,使用 ...mapGetters(['doneTodos'])doneTodos getter 映射到组件的计算属性中。
    • 这样,我们就可以在模板中直接使用 this.doneTodos 来访问 Vuex store 中的 doneTodos getter。

通过这种方式,我们可以更简洁地访问 Vuex store 中的 getter,而无需每次都手动调用 this.$store.getters.doneTodos

上一篇:vue $t

下一篇:vue3跨域解决方案

大家都在看

vue.js devtools用法

three.js vue

vue js for循环

vue.min.js 本地引入

vue.js 3

highlight.js vue

vue.config.js 配置

vue.config.js 配置代理

vue.config.js devserv

vue.config.js configu

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站