国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

為vue項目自動設置請求狀態(tài)的配置方法

2019-11-19 11:22:14
字體:
來源:轉載
供稿:網(wǎng)友

在進入一個頁面的時候,一般在獲取數(shù)據(jù)的同時,會先顯示一個 loading ,等請求結束再隱藏 loading 渲染頁面,只需要用一個屬性去記錄請求的狀態(tài),再根據(jù)這個狀態(tài)去渲染頁面就好了

async handler() {  this.loading = true  await fetch()  this.loading = false}

雖然是很簡單的功能,可是要處理的地方多的時候,還是很繁瑣的,就想著能不能統(tǒng)一設置處理請求的 loading ,然后頁面根據(jù) loading 的狀態(tài)決定要顯示的內容,就根據(jù)自己的想法做了一些封裝,自動給所有 ajax 請求設置 loading 狀態(tài),主要思路是把所有請求集中到單一實例上,通過 proxy 代理屬性訪問,把 loading 狀態(tài)提交到 store 的 state 中

安裝

$ npm install vue-ajax-loading

演示

在線demo(打開較慢)

 

使用

配置 store 的 state 及 mutations

import { loadingState, loadingMutations } from 'vue-ajax-loading'const store = new Vuex.Store({  state: {    ...loadingState  },  mutations: {    ...loadingMutations  }})

把所有請求集中到一個對象上

import { ajaxLoading } from 'vue-ajax-loading'import axios from 'axios'import store from '../store' // Vuex.Store 創(chuàng)建的實例axios.defaults.baseURL = 'https://cnodejs.org/api/v1'// 把請求集中到單一對象上,如:const service = {  global: {    // 全局的請求    getTopics() {      return axios.get('/topics')    },    getTopicById(id = '5433d5e4e737cbe96dcef312') {      return axios.get(`/topic/${id}`)    }  },  modules: {    // 有命名空間的請求,命名空間就是 topic    topic: {      getTopics() {        return axios.get('/topics')      },      getTopicById(id = '5433d5e4e737cbe96dcef312') {        return axios.get(`/topic/${id}`)      }    }  }}export default ajaxLoading({  store,  service})

完成以上配置之后,通過上面 export default 出來的對象去發(fā)送請求,就會自動設置請求的狀態(tài),然后可以在組件內通過 this.$store.state.loading this.$loading 去訪問請求狀態(tài),如:

<el-button type="primary" :loading="$loading.getTopics" @click="handler1">getTopics</el-button><el-button type="primary" :loading="$loading.delay" @click="delay">定時兩秒</el-button><el-button type="primary" :loading="$loading.topic.getTopics" @click="handler3">topic.getTopics</el-button>import api from 'path/to/api'export default {  methods: {    handler1() {      api.getTopics()    },    handler3() {      api.topic.getTopics()    },    delay() {      api.delay()    }  }}

Options
store

Vuex.Store 創(chuàng)建的實例

service

包含所有請求的對象,可以配置 global 和 modules 屬性

  • global:全局作用域的請求,可以設置為 對象 或 數(shù)組對象
  • modules:帶命名空間的請求,類型為 對象 ,屬性名即為命名空間

總結

以上所述是小編給大家介紹的為vue項目自動設置請求狀態(tài)的配置方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 磐石市| 赤水市| 广元市| 阿瓦提县| 汪清县| 嘉峪关市| 福清市| 右玉县| 康马县| 如东县| 吴桥县| 赣榆县| 壶关县| 津市市| 房产| 扎鲁特旗| 黑龙江省| 乌鲁木齐市| 平安县| 通辽市| 保山市| 弥渡县| 岳阳市| 呼和浩特市| 宕昌县| 永济市| 霍城县| 武隆县| 嵩明县| 香河县| 铅山县| 观塘区| 易门县| 井研县| 河间市| 望江县| 宝坻区| 金溪县| 胶州市| 湖口县| 鄱阳县|