![0c936af9c3fcc30e25a6568a85b3f60b.png](https://img-blog.csdnimg.cn/img_convert/0c936af9c3fcc30e25a6568a85b3f60b.png)
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.
首先, 概括下 vuex基本使用流程为: 在action中分发异步请求, 在异步回调中提交mutation,在mutation中修改state, 使用getters对state的值进行计算封装.
为了能够很好的隔离页面view视图与数据的请求, 同时在使用vuex的action分发异步请求后,能够接收回调,进行了以下封装:
一. http的封装
http模块包含3个文件, config.js , http.js , api.js
config.js 封装网关域名,及所有接口的方法名
![f3d1acf883e928082d6c1baba7f4c77a.png](https://img-blog.csdnimg.cn/img_convert/f3d1acf883e928082d6c1baba7f4c77a.png)
http.js 封装axios基本的get, post请求
![23c80e26313c58e4c8ab0bc3e5fff83d.png](https://img-blog.csdnimg.cn/img_convert/23c80e26313c58e4c8ab0bc3e5fff83d.png)
api.js 封装接口名及对应的传输字段,回调响应数据
![132743b4efcc6f8c128d8fc24d65c0d5.png](https://img-blog.csdnimg.cn/img_convert/132743b4efcc6f8c128d8fc24d65c0d5.png)
二. vuex模块的封装
vuex通过action异步请求,为了回调执行状态,需在action中返回promise,针对该异步请求的封装, 分为2种情况:
1. view层需要渲染的数据,例如:加载用户基本信息,加载商品列表,订单列表
异步请求后,需要提交mutation,修改state,使用getters计算
2. 执行某个功能动作,例如点赞,添加,删除
异步请求后,不需要提交mutation,不需要使用state中的数据
下图的获取用户基本信息属于情况1, 执行点赞动作属于情况2
![837f4ec6b3efa584ff03c5432d21dc29.png](https://img-blog.csdnimg.cn/img_convert/837f4ec6b3efa584ff03c5432d21dc29.png)
为了处理以上两种情况,做了以下封装 (假设:code=1,请求成功, code=0, 请求失败)
![4b0a17166b733a815822efe5aa66ce45.png](https://img-blog.csdnimg.cn/img_convert/4b0a17166b733a815822efe5aa66ce45.png)
![04709c1d703f47b6a9ba2c2453dc488d.png](https://img-blog.csdnimg.cn/img_convert/04709c1d703f47b6a9ba2c2453dc488d.png)
在页面调用如下:
![7f13f5d94b3afdb707ee5773835e53ce.png](https://img-blog.csdnimg.cn/img_convert/7f13f5d94b3afdb707ee5773835e53ce.png)