vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
一、介绍 vuex里面的四大金刚:State, Mutations,Actions,Getters (上次记得关于vuex笔记 //www.jb51.net/article/138229.htm,是一个简单的应用;这是一些简单的vue的小组件方法: //www.jb51.net/article/138230.htm) 何为四大金刚? 1.State (这里可以是 小写的 state,跟官网保持一致,采用大写,因为个人习惯,后面的代码介绍采用小写) vuex的状态管理,需要依赖它的状态树,官网说: Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一 【Vuex 中的 State】 Vuex 的核心概念之一就是 State,它是整个应用的单一状态树。这意味着所有组件共享同一份状态,而不是各自维护自己的状态。这样做的好处是方便管理和跟踪应用的状态变化,使得调试和协作变得更为简单。在 Vuex 中,State 用于存储应用程序的所有层级状态。例如: ```javascript const state = { blogTitle: '迩伶贰blog', views: 10, blogNumber: 100, total: 0, todos: [ { id: 1, done: true, text: '我是码农' }, { id: 2, done: false, text: '我是码农202号' }, { id: 3, done: true, text: '我是码农202号' } ] } ``` 在这个例子中,`state` 包含了博客的标题、浏览量、博客数量、总数以及待办事项列表。 【Mutation】 Mutation 是改变 Vuex State 的唯一途径。每个 Mutation 都包含一个类型(type)和一个处理函数(handler)。类型用于标识具体的修改动作,而处理函数则执行实际的状态改变。例如: ```javascript const mutation = { addViews (state) { state.views++ }, blogAdd (state) { state.blogNumber++ }, clickTotal (state) { state.total++ } } ``` 在这里,我们定义了三个 Mutation,分别用于增加浏览量、博客数量和总点击数。 【Action】 Action 与 Mutation 类似,但它们可以包含异步操作,并通过提交 Mutation 来间接改变 State。这使得 Action 成为了处理复杂逻辑和远程操作的理想选择。比如: ```javascript const actions = { addViews ({ commit }) { commit('addViews') }, clickTotal ({ commit }) { commit('clickTotal') }, blogAdd ({ commit }) { commit('blogAdd') } } ``` 这里的每个 Action 都会调用对应的 Mutation 来更新 State。 【Getter】 Getter 是从 State 中派生出来的辅助函数,用于创建计算属性,可以根据 State 的当前值返回新的衍生数据。这样可以在组件中直接使用 Getter 函数,而不是直接操作复杂的 State 数据。例如: ```javascript const getters = { getToDo (state) { return state.todos.filter(item => item.done === true) } } ``` 这个 Getter 用于获取所有已完成的待办事项。 **集成到应用中** 将以上内容整合到 Vuex 中,通常会在 `src` 目录下创建一个 `store` 文件夹,并在其中的 `index.js` 文件中定义 Store。例如: ```javascript import Vue from 'vue' import Vuex from 'vue' Vue.use(Vuex) export default new Vuex.Store({ state, mutations, actions, getters }) ``` 然后在你的 Vue 组件中,可以使用 `mapState`, `mapGetters`, `mapActions` 和 `mapMutations` 辅助函数来简化访问和操作 State、Getters、Actions 和 Mutations。这些辅助函数可以让你在组件内便捷地绑定 Store 中的方法,如下所示: ```javascript import { mapState, mapGetters, mapActions, mapMutations } from 'vuex' export default { computed: { ...mapState(['blogTitle', 'views']), ...mapGetters(['getToDo']) }, methods: { ...mapActions(['addViews', 'clickTotal', 'blogAdd']), ...mapMutations(['addViews', 'clickTotal', 'blogAdd']) } } ``` 这样,组件就可以直接调用 Store 中的方法,无需手动传递参数或关心 State 的管理细节,提高了代码的可读性和可维护性。
- 粉丝: 7
- 资源: 912
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助