url全局地址封装 vue_VUE动态(自动)Loading【绑定到URL】,同页面多个Loading互不冲突...

摘要:

ding设置true)12*/13axios.interceptors.request.use(function(config){14store.commit("loading",config.url);15returnconfig16});17/**18*定义一个响应拦截器(Loading设置为false)19*/20axios.interceptors.response.use(functio

需求来源:当使用React时,使用 umi loading 很方便,页面对http请求发生改变时,也会自动改变loading的相关状态(true/false)

rnconfig16});17/**18*定义一个响应拦截器(Loading设置为false)19*/20axios.interceptors.response.use(function(respon

对VUE插件进行找寻,发现没找到合适内容,就参考思路自行设计了一套

#脚本工作的7个小贴士家用物联网——简单的DevOps使用FAKE的基于Git的版本控制使用原子设计,F#与Fabulous创建美丽的XamarinForms应用在一个隔离的进程中执行.NETCore

功能实现

界面Loading自动加载,不需要在每个请求前后进行拦截,且配置简单、实现方便,如图:

vice/api.js:请求接口提取(统一管理请求URL,详细内容见右)  store.js:全局状态第二步,接口统一提取(service/api.js)  如上是提取的统一URL内容,使用时直接引入

: 技术栈vue、vuex、axios(http请求) 开始实现 第一步,文件目录结构介绍:  lib/http: Http封装,对系统请求进行封装  service/a

ethods:{24/**25*查询标签列表(请求封装查询,也可直接使用axios.post等内容)26*/27queryTags(){28Service.articleTagLevel({}).th

技术栈

vue、vuex、axios(http请求)

——转换侧景,新的图块集与冲突检测几何代数与量子技术GraphQL:最佳API赢家!Fabulous:用于跨平台的移动应用函数式编程介绍F#与Fable中使用Elm的Elm架构博客使用F#脚本工作的7

: 技术栈vue、vuex、axios(http请求) 开始实现 第一步,文件目录结构介绍:  lib/http: Http封装,对系统请求进行封装  service/a

ethods:{24/**25*查询标签列表(请求封装查询,也可直接使用axios.post等内容)26*/27queryTags(){28Service.articleTagLevel({}).th

开始实现

第一步,文件目录结构介绍:

lib/http: Http封装,对系统请求进行封装

service/api.js: 请求接口提取(统一管理请求URL,详细内容见右)

store.js: 全局状态

第二步,接口统一提取(service/api.js)

如上是提取的统一URL内容,使用时直接引入

现在显示GitHub的使用情况微基准测试设计准则为线程添加mono.wasm支持Haskell——经验总结MSBuild二进制与结构日志浏览器视频及幻灯片F#MonoGame平台游戏系列——转换侧景,

第三步,全局状态封装(store.js)

1 import Vue from "vue";2 import Vuex from "vuex";3 import * as Service from "@/service/api";4

5 Vue.use(Vuex);6

7 //实现自动注册loading URl

8 const loading ={};9 Object.values(Service.URLS).forEach(value =>{10 loading[value] = false;11 });12

13 export default newVuex.Store({14 state: {15 //url请求列表,自动注册

16 loading: loading17 },18 mutations: {19 loading(state, url) {20 state.loading[url] = true;21 },22 unloading(state, url) {23 state.loading[url] = false;24 }25 },26 actions: {}27 });

第四步,Http封装

1 import axios from "axios";2 import store from "../../store"

3

4

5 /**6 * 设置请求前缀(末尾必须包含 / 否则会导致动态loading失败)7 */

8 axios.defaults.baseURL = "http://www.huic.top/";9

10 /**11 * 定义一个请求拦截器(Loading设置true)12 */

13 axios.interceptors.request.use(function(config) {14 store.commit("loading", config.url);15 returnconfig16 });17 /**18 * 定义一个响应拦截器(Loading设置为false)19 */

20 axios.interceptors.response.use(function(response) {21 store.commit("unloading", response.config.url.replace(axios.defaults.baseURL, ""));22 returnresponse23 });

这里的封装只封装了拦截器,并未对具体请求进行封装,因为请求封装在这里可有可无,如需要的请联系邮箱:[email protected]

状态(true/false)对VUE插件进行找寻,发现没找到合适内容,就参考思路自行设计了一套功能实现界面Loading自动加载,不需要在每个请求前后进行拦截,且配置简单、实现方便,如图:

第五步,使用

1

2 import "./index.less";3 import * as Service from "@/service/api";4

5 export default{6 data: () =>({7 //题目标签

8 tags: [],9 }),10 computed: {11 tagLoading() {12 return this.$store.state.loading[Service.URLS.ARTICLE_TAG_LEVEL];13 },14 testLoading() {15 return this.$store.state.loading[Service.URLS.ARTICLE_TEST];16 }17 },18 created() {19 this.queryTags();20 },21 components: {22 },23 methods: {24 /**25 * 查询标签列表(请求封装查询,也可直接使用 axios.post 等内容)26 */

27 queryTags() {28 Service.articleTagLevel({}).then(res =>{29 if(res.isOk()) {30 this.tags =res.data.records;31 }32 });33 }34 }35 };36

以上代码为VUE简单使用,则将loading - url - 组件进行绑定,则代表在本页面进行请求,例如:articleTagLevel,则会自动绑定loading(见12行)

xiosfrom"axios";2importstorefrom"../../store"345/**6*设置请求前缀(末尾必须包含/否则会导致动态loading失败)

以上核心代码为10-17行,代表将url和loading属性绑定,使用方法见下:

e.loading[Service.URLS.ARTICLE_TAG_LEVEL];13},14testLoading(){15returnthis.$store.state.loading[Serv

1

2

3

4 标签选择5

6

7

8

9

10

使用方法:第 7 行,其中 :loading="tagLoading" 则代表将tagLoading属性绑定到loading参数中

="tagLoading"则代表将tagLoading属性绑定到loading参数中至此,实现成功.End.新闻ML.NET1.2发布,包含ModelBuilder升级NuGet.org上现在显示Gi

至此,实现成功.

et——F#游戏组合类库rspeele/FParsec-Pipes——一系列用于FParsec的操作符,用于简化链式解析最新的发布Rider2019.2EAP4SchlenkR.FsHttp0.9.1

End.

,22unloading(state,url){23state.loading[url]=false;24}25},26actions:{}27});第四步,Http封装1importaxiosfro

你可能感兴趣的:(url全局地址封装,vue)