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. 如何从OutLook正确取得定期会议的时间?(待解决)

    背景: 用Microsoft.Office.Interop.Outlook取得日历项,然后根据业务要求筛选. 现象: 如果是定期会议,使用AppointmentItem.Start/End取得的是该定 ...

  2. VScode Doxygen与Todo Tree插件的使用与安装

    VScode Doxygen与Todo Tree插件的使用与安装 引言 程序中代码注释的规范和统一性是作为工程人员必不可少的技能,本文在Visual Studio Code的环境下简单介绍Doxyge ...

  3. skywalking的插件管理agent管理

    转载自博客:https://my.oschina.net/eacdy/blog/4304312/print Java Agent是插件化.可插拔的.Skywalking的插件分为三种: 引导插件:在a ...

  4. 尚学堂 216 java中的字节码操作

    所谓的字节码操作就是操作我们已经加载的字节码 接下来我们重点来讲解javaassist类库 使用需要下载jar包,把jar包添加到对应的工程之后 package com.bjsxt.test; pub ...

  5. 分词搜索 sphinx+php+mysql

    sphinx3.1.1的安装与使用 下载sphinx3.1.1 wget http://sphinxsearch.com/files/sphinx-3.1.1-612d99f-linux-amd64. ...

  6. Spring—容器外的Bean使用依赖注入

    认识AutowireCapableBeanFactory AutowireCapableBeanFactory是在BeanFactory的基础上实现对已存在实例的管理.可以使用这个接口集成其他框架,捆 ...

  7. java代理,静态代理、jdk代理、cglib代理、Aspectj

    我实在接触spring的时候才接触到代理这个东西的,一直想整理一下笔记. 什么是代理模式:代理模式是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能.简单来说就是要创建一个新的对象,我 ...

  8. SQL注入之Union注入攻击

    union联合查询算是最简单的一种注入了,但是却是经常遇到. 什么是UNION注入 UNION操作符用于合并两个或多个SELECT语句的结果集,而且UNION内部的SELECT语句必须拥有相同数量的列 ...

  9. bugku 一个神奇的登录框

    一个登录界面,填个admin,123试试,提示try again 抓包看看. 在admin后加个’提示try again 看来是被过滤了,试试” 报错了,加上# 报错没有了,说明存在注入点. 先来判断 ...

  10. 程序员必备基础:Git 命令全方位学习

    前言 掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ https: ...