Vuex状态管理

状态就是数据。    在react里有个Flux的数据流管理(单向数据流)
作用1:实现组件之间的数据共享。
作用2:用于缓存。(避免当用户频繁点击,页面不断调接口)
 
 
先安装状态管理工具
npm install vuex -S
 
1.在Src文件夹里创建一个store文件夹。
2.创建一个index.js的文件,里面引入vuex,如下
 
再在main.js入口文件里引入状态管理.
 
 

store里的各个选项的含义:

①:state----->要被共享的数据,都放在state中
在需要引用的地方通过$store.state.msg对应的key值,即可取到共享的数据.
②:mutations---------->是用于改变与修改state的,当state被修改完成,页面视图自动更新。(mutations里的每个方法的第一个形参都为state)
作者尤雨溪不建议用这种方式直接修改共享的state数据.
建议写法:
 
 
 
状态管理是一种单向数据流
 
 
dev-tools的安装:
用于配合vuex进行代码的调试工作.如果使用之前那种强制更改state共享数据的方法,则在调试工具(F12)里的vue工具中,第二个闹钟选项里是无法看到共享数据的更新的。
 
往state里添加一个数组叫todolist,通过state共享,做一个迷你版的todolist
 
 
mutations里的方法可以传两个参数
并在Home.vue里
mutations里的函数可以传多个参数,第一个参数一定是状态管理state,之后的参数都来自于函数的实参。
③:getters------------->常用于计算state状态管理某个值的数量(相当于是计算属性),当被关联的state变量发生变化时,getters变量会重新计算
调用用$store.getters.total
④: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。
先引入

再创建axios实例:
在找到请求拦截器:,把axios改成instance实例。
请求拦截器:在请求被发送出去之前,做一些验证工作。
响应拦截器,同上,改成instance实例。
响应拦截器:在响应到达之前,先进行数据过滤
 
最后导出instance--------------->export default instance;
 
 
 
调接口:
①:在对应组件引入axios,
②:在mounted里调用axios(get请求入参用params,post用data)
 
 
这样可以拿到接口的所有数据
1.请求拦截器的return如果没有,则无法响应会报错,
2.相应拦截器的return如果没有,则返回数据为undefined;
 
可以在对应的区域进行数据过滤和错误处理:
以后还可以加token
 
ES6模块化语法里:
使用export 抛出,必须使用import{  } from ''进行引入.
使用export default {  }抛出,必须import xx from '' 进行引入。
在同一个模块中,有且仅有一个export default,可以没有。
在同一个模块中,export  可以不限个数.
 
在初始化调接口时,可以进行再次封装:
在utils文件夹在创建一个api.js。
①:
在对应的组件页面使用getData
getData()函数运行之后的结果是一个promise对象,可以直接使用then方法。
②:
 
 
 
 
可以将http对象挂载在vue实例上
在入口文件main.js里:
这样Vue实例下就多了一个内置对象的方法$http.
实例中调用方法即可这样。(当拿到的数据不需要共享时可用)。
 
 
 
只有mutations里的第一个形参才是state
actions中的方法第一个形参并不是state,而是store对象
actions是vuex官方建议的,与后端接口对接的入口,
工作中,一般让那些需要被多个组件共享的后端数据,走actions
在actions中,可以直接修改state,但是不推荐这么做(无法在devtools中记录显示)

可以在状态管理的actions中这样使用actions,但是作者尤雨溪不建议这样使用。
正确的方法:
并在对应组件的mounted中如下调用。
 
 
 
 

Vuex与axios的封装和调用的更多相关文章

  1. vue中Axios的封装和API接口的管理

    前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...

  2. axios(封装使用、拦截特定请求、判断所有请求加载完毕)

    博客地址:https://ainyi.com/71 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 Node.js 中使用 vue2.0之后,就不再对 vue-resource 更新 ...

  3. 前后分离模型之封装 Api 调用

    Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异步过 ...

  4. axios方法封装

    axios方法封装 一般情况下,我们会用到的方法有:GET,POST,PUT,PATCH,封装方法如下:     五.封装后的方法的使用 1.在main.js文件里引用之前写好的文件,我的命名为htt ...

  5. 聊聊 Vue 中 axios 的封装

    聊聊 Vue 中 axios 的封装 axios 是 Vue 官方推荐的一个 HTTP 库,用 axios 官方简介来介绍它,就是: Axios 是一个基于 promise 的 HTTP 库,可以用在 ...

  6. axios模块封装

    1.新建文件夹 network 在文件新建 request.js request.js: import axios from 'axios' export function request (conf ...

  7. Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

    准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...

  8. vue中axios的封装以及简单使用

    一.axios的封装 在vue中为了使用axios使用方便,不需要每一个模块进行导入,就需要对其进行封装: 1.新建http.js模块 import axios from 'axios' // 设置基 ...

  9. Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

    Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...

随机推荐

  1. Redis 数据结构 之 SDS

    SDS(simple dynamic string),简单动态字符串.s同时它被称为 Hacking String.hack 的地方就在 sds 保存了字符串的长度以及剩余空间.sds 的实现在 sd ...

  2. Linux下搭建mysql

    [准备环境] Linux   centos7 [mysql安装步骤] 1.首先确定centos版本 cat /etc/redhat-release 2.yum安装 yum -y install mar ...

  3. IDEA+Maven+Tomcat构建Web项目的三种方法

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文将介绍三种方 ...

  4. Github删除分支下所有提交记录

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 有时候,我们提交 ...

  5. 【服务器】CentOs7系统使用宝塔面板搭建网站,有FTP配置(保姆式教程)

    内容繁多,请耐心跟着流程走,在过程中遇到问题请在下面留言(我只是小白,请专业人士喷轻点). 这次用thinkphp5.1做演示,单纯的做演示,我打算下一篇文章用typecho(博客框架)演示. 前言 ...

  6. 入门大数据---Elasticsearch是什么?

    Elasticsearch是谁不重要,重要的是咱们都知道百度,谷歌这样的搜索巨头吧.它们的核心技术都利用了Elasticsearch,所以我们有必要对Elasticsearch了解下! 1.Elast ...

  7. JavaScript基础对象创建模式之链式调用模式(Chaining Pattern)(029)

    链式调用模式允许一个接一个地调用对象的方法.这种模式不考虑保存函数的返回值,所以整个调用可以在同一行内完成: myobj.method1("hello").method2().me ...

  8. mycat增加开机自启

    一.安装及配置: 见https://github.com/MyCATApache/Mycat-Server 二.增加开机自启: 1.添加开机自启脚本:vim /etc/init.d/mycat.sh, ...

  9. django admin 添加用户出现外键约束错误

    今天在做mxonline项目时,注册了用户表进admin后,想在后台添加一个用户试试,结果出现了错误,经过一番搜索发现以下两个解决方法,不过我只用了一种 报错信息: IntegrityError: ( ...

  10. CentOS7开机报错piix4_smbus ****host smbus controller not enabled

    vi /etc/modprobe.d/blacklist.conf 输入:blacklist i2c_piix4 保存退出::wq 重启:reboot (完)