Vuex与axios的封装和调用

栏目: IT技术 · 发布时间: 4年前

Vuex状态管理

状态就是数据。    在react里有个Flux的数据流管理(单向数据流)

作用1 :实现组件之间的数据共享。

作用2 :用于缓存。(避免当用户频繁点击,页面不断调接口)

先安装状态管理工具

npm install vuex -S

1.在Src文件夹里创建一个store文件夹。

2.创建一个index.js的文件,里面引入vuex,如下

Vuex与axios的封装和调用

再在main.js入口文件里引入状态管理.

Vuex与axios的封装和调用

store里的各个选项的含义:

①:state----->要被共享的数据,都放在state中

Vuex与axios的封装和调用

在需要引用的地方通过$store.state.msg对应的key值,即可取到共享的数据.

Vuex与axios的封装和调用

②:mutations---------->是用于改变与修改state的,当state被修改完成,页面视图自动更新。(mutations里的每个方法的第一个形参都为state)

作者尤雨溪不建议用这种方式直接修改共享的state数据.

Vuex与axios的封装和调用

建议写法:

Vuex与axios的封装和调用

Vuex与axios的封装和调用

状态管理是一种单向数据流

Vuex与axios的封装和调用

Vuex与axios的封装和调用

dev-tools的安装:

Vuex与axios的封装和调用

用于配合vuex进行代码的调试工作.如果使用之前那种强制更改state共享数据的方法,则在调试工具(F12)里的vue工具中,第二个闹钟选项里是无法看到共享数据的更新的。

往state里添加一个数组叫todolist,通过state共享,做一个迷你版的todolist

Vuex与axios的封装和调用

mutations里的方法可以传两个参数

Vuex与axios的封装和调用

并在Home.vue里

Vuex与axios的封装和调用

mutations里的函数可以传多个参数,第一个参数一定是状态管理state,之后的参数都来自于函数的实参。

Vuex与axios的封装和调用

③:getters------------->常用于计算state状态管理某个值的数量(相当于是计算属性),当被关联的state变量发生变化时,getters变量会重新计算

Vuex与axios的封装和调用

调用用$store.getters.total

Vuex与axios的封装和调用

④:Actions专门负责和后端接口打交道(见最后)

axios:(绝大多数公司都用)

是一个http请求工具,基于Promis的封装的 

jquery用的已经很少了.

axios不仅可以用在客户端,还可以用在node.js服务器.

Eg:axios({ }).then(res=).catch(err)

安装方式:npm install axios;

3fengs.com-------------各种 工具 包网站.

npm官方文档axios包里:

1.创建一个utils文件夹。

2.再创建一个fetch.js。

先引入 Vuex与axios的封装和调用

再创建axios实例:

Vuex与axios的封装和调用

在找到请求拦截器:,把axios改成instance实例。

请求拦截器:在请求被发送出去之前,做一些验证工作。

Vuex与axios的封装和调用

响应拦截器,同上,改成instance实例。

响应拦截器:在响应到达之前,先进行数据过滤

Vuex与axios的封装和调用

最后导出instance--------------->export default instance;

调接口:

①:在对应组件引入axios,

Vuex与axios的封装和调用

②:在mounted里调用axios(get请求入参用params,post用data)

Vuex与axios的封装和调用

这样可以拿到接口的所有数据

1.请求拦截器的return如果没有,则无法响应会报错,

2.相应拦截器的return如果没有,则返回数据为undefined;

可以在对应的区域进行数据过滤和错误处理:

Vuex与axios的封装和调用

以后还可以加token

ES6模块化语法里:

使用export 抛出,必须使用import{  } from ''进行引入.

使用export default {  }抛出,必须import xx from '' 进行引入。

在同一个模块中,有且仅有一个export default,可以没有。

在同一个模块中,export  可以不限个数.

在初始化调接口时,可以进行再次封装:

在utils文件夹在创建一个api.js。

①:

Vuex与axios的封装和调用

在对应的组件页面使用getData

getData()函数运行之后的结果是一个promise对象,可以直接使用then方法。

Vuex与axios的封装和调用

②:

Vuex与axios的封装和调用

Vuex与axios的封装和调用

可以将http对象挂载在vue实例上

在入口文件main.js里:

Vuex与axios的封装和调用

这样Vue实例下就多了一个内置对象的方法$http.

实例中调用方法即可这样。(当拿到的数据不需要共享时可用)。

Vuex与axios的封装和调用

只有mutations里的第一个形参才是state

actions中的方法第一个形参并不是state,而是store对象

actions是vuex官方建议的,与后端接口对接的入口,

工作中,一般让那些需要被多个组件共享的后端数据,走actions

在actions中,可以直接修改state,但是不推荐这么做(无法在devtools中记录显示)

Vuex与axios的封装和调用

可以在状态管理的actions中这样使用actions,但是作者尤雨溪不建议这样使用。

Vuex与axios的封装和调用

正确的方法:

Vuex与axios的封装和调用

并在对应组件的mounted中如下调用。

Vuex与axios的封装和调用


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Dojo权威指南

Dojo权威指南

拉塞尔 / 李松峰、李丽 / 机械工业出版社 / 2009-4 / 79.00元

通过使用Dojo这个工业强度的JavaScript工具箱,我们可以比使用其他任何Ajax框架更高效、更容易地创建JavaScript或Ajax驱动的应用程序和站点。 《Dojo权威指南》向读者展示了如何充分利用Dojo工具箱中包含的大量实用特性,以前所未有的效率开发出功能丰富、响应敏捷的Web应用程序。读者通过《Dojo权威指南》能够学习到创建复杂布局和表单控件(常见于高级桌面应用程序)的技......一起来看看 《Dojo权威指南》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换