博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vuex mapState、mapGetters、mapActions、mapMutations的使用
阅读量:5081 次
发布时间:2019-06-12

本文共 2300 字,大约阅读时间需要 7 分钟。

 

例子:

 

index.js

复制代码
import Vue from 'vue'import Vuex from 'vuex'import mutations from './mutations'import actions from './action'import getters from './getters'Vue.use(Vuex)const state = {    userInfo: { phone: 111 }, //用户信息    orderList: [{ orderno: '1111' }], //订单列表    orderDetail: null, //订单产品详情    login: false, //是否登录}export default new Vuex.Store({    state,    getters,    actions,    mutations,})
复制代码
复制代码
computed: {            ...mapState([                'orderList',                'login'            ]),        },           mounted(){              console.log(typeof orderList); ==>undefind            console.log(typeof this.orderList)==>object        }
复制代码

mapState通过扩展运算符将store.state.orderList 映射this.orderList  这个this 很重要,这个映射直接映射到当前Vue的this对象上。

所以通过this都能将这些对象点出来,同理,mapActions, mapMutations都是一样的道理。牢记~~~

 

 

 

import Vuex from 'vuex'import Vue from 'vue'Vue.use(Vuex)export default new Vuex.Store({  state:{    data:'test'  },  getters:{      },  mutations:{  },  actions:{  }})

 

 另外mapState通过扩展运算符将store.state.data映射this.count  这个this 很重要,这个映射直接映射到当前Vue的this对象上。

在钩子函数中可直接 this.count调用

 

当state,mutations,actions数量很多时,在一个文件夹下不方便管理。可把state,getters,mutations,actions分别写在不同文件内,通过export 导出。再在一个文件中引入。

例如:

//state.jsconst state={  count:10}export default state;   //切记记得导出
//getters.jsexport const gets= state => state.count   //这里直接导出 就不用export default              相当于 gets=function(state){
             return state.count            }
//mutations.jsconst mutations={  add(state){    state.count+=1  },  sub(state){    state.count-=1  }}export default mutations;
//actions.jsexport const addactions=(context)=>{  context.commit('add')}export const subactions=(context)=>{  context.commit('sub')}

 

所有文件导出后在一个文件内统一引入

//store文件夹下的store.js import Vue from 'vue'import Vuex from 'vuex'import state from './state.js' //由于上边的getters.js 和actions.js是通过export 导出每一个,import * as getters from './getters.js'import mutations from './mutations.js' import * as actions from './actions.js'Vue.use(Vuex)export default new Vuex.Store({  state,  getters,  mutations,  actions})

使用

 

转载于:https://www.cnblogs.com/zjx304/p/9880996.html

你可能感兴趣的文章
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>
站立会议08(冲刺2)
查看>>
url查询参数解析
查看>>
http://coolshell.cn/articles/10910.html
查看>>
[转]jsbsim基础概念
查看>>