欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue 項(xiàng)目中的this.$get,this.$post等$的用法案例詳解

 更新時(shí)間:2022年12月10日 09:47:22   作者:jjw_zyfx  
vue.js的插件應(yīng)該暴露一個(gè)install方法。這個(gè)方法的第一個(gè)參數(shù)是vue構(gòu)造器,第二個(gè)參數(shù)是一個(gè)可選的選項(xiàng)對(duì)象,首頁(yè)要安裝axios,本文結(jié)合案例代碼給大家詳細(xì)講解vue 中的this.$get,this.$post等$的用法,一起學(xué)習(xí)下吧

vue官網(wǎng)上有這么一句話(huà)

vue.js的插件應(yīng)該暴露一個(gè)install方法。這個(gè)方法的第一個(gè)參數(shù)是vue構(gòu)造器,第二個(gè)參數(shù)是一個(gè)可選的選項(xiàng)對(duì)象:

注意要首先安裝axios 即

npm install axios -S

結(jié)合案例:

//  基于axios 封裝的http請(qǐng)求插件
const axios = require('axios');
 
/**
 * 以下這種方式需要調(diào)用Vue.use方法 調(diào)用的時(shí)候調(diào)用 this.$fetch, this.$post, this.$axios, this.$put, this.$del 方法
 */
function coverFormData (data) {
  return Object.keys(data).map(key => {
    let value = data[key];
    if (typeof value === 'object') {
      value = JSON.stringify(value);
    }
    return encodeURIComponent(key) + '=' + encodeURIComponent(value);
  })
}
const http = {
  install(Vue, Option) {
    axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
    if (Option) {
      // 超時(shí)設(shè)置
      axios.defaults.timeout = Option.timeout || 10000;
      // 默認(rèn)請(qǐng)求地址設(shè)置
      axios.defaults.baseURL = Option.baseURL || "";
      // 頭部設(shè)置
      if (Option.headers && typeof Option.headers === 'object') {
        for (let key in Option.headers) {
          if (!Option.headers.hasOwnProperty(key)) continue;
          axios.defaults.headers[key] = Option.headers[key];
        }
      }
      // 請(qǐng)求/響應(yīng)攔截器
      Option.inRequest && axios.interceptors.request.use(Option.inRequest, error => {
          Promise.reject(error);
      });
      Option.inResponse && axios.interceptors.response.use(Option.inResponse, error => {
          Promise.reject(error);
      });
    }
    /**
     * @param  {string} url
     * @param  {object} params={}  參數(shù)可以根據(jù)需要自行處理
     */
    const fetch = (url, params = {}, config = {}) => {
      const str = coverFormData(params).join('&');
      return new Promise((resolve, reject) => {
        let address = url;
        if (str) {
          address += '?' + str;
        }
        axios.get(address, config).then(res => {
          resolve(res.data);
        }).catch(error => {
          reject(error);
        });
      });
    };
 
    /**
     * @param  {string} url
     * @param  {object} data={} 參數(shù)可以根據(jù)需要自行處理
    
     */
    const post = (url, data = {}, config = {}) => {
      let str = coverFormData(data).join('&');
      if (config.headers && config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('application/json') > -1) {
        str = JSON.parse(JSON.stringify(data));
      }
      return new Promise((resolve, reject) => {
        axios.post(url, str, config).then(res => {
          resolve(res.data);
        }).catch(error => {
          reject(error);
        });
      });
    };
 
    /**
     * @param  {string} url
     * @param  {object} data={} 參數(shù)可以根據(jù)需要自行處理
     */
    const put = (url, data = {}, config = {}) => {
      const str = coverFormData(data).join('&');
      return new Promise((resolve, reject) => {
        axios.put(url, str, config).then(res => {
          resolve(res.data);
        }).catch(error => {
          reject(error);
        });
      });
    };
 
    /**
     * @param  {string} url
     * @param  {object} params={}
     */
 
    const del = (url, config = {}) => {
      const str = coverFormData(config).join('&');
      return new Promise((resolve, reject) => {
        axios.delete(url, str).then(res => {
          resolve(res.data);
        }).catch(error => {
          reject(error);
        });
      });
    };
    const data = { axios, fetch, post, put, del };
    // 這個(gè)地方說(shuō)明了為啥使用的時(shí)候是this.$fetch, this.$post, this.$axios, this.$put, this.$del 這幾個(gè)方式
    Object.keys(data).map(item => Object.defineProperty(Vue.prototype, '$' + item, { value: data[item] }));
  }
};
 
export default http;

 然后在main.js中導(dǎo)入包使用:

import http from './assets/js/http';
 
Vue.use(http, {
    timeout: 60000,
    inRequest (config) {
        config.headers['Authorization'] =
            sessionStorage.getItem('TokenType') +" "
            + sessionStorage.getItem('AccessToken');
        return config;
    }, 
    inResponse (response) {
        return response;
    }
});

 之后在子組件中就可以直接使用this.$post等了

比如:

this.$post("你的url", {
        CityId: cityid,
        Type: 3
      })
        .then(res => {
          if (res.Success) {
            this.searchSecondary = res.Data;
          }
        })
        .catch(error => {
          console.log(error);
        });

注意:this.$get是用this.$fetch代替的例如:

this.$fetch("你的url", {
 
    })
      .then(res => {
        console.log(res)
      })
      .catch(error => {
        console.log(error);
      });

到此這篇關(guān)于vue 項(xiàng)目中的this.$get,this.$post等$的用法案例詳解的文章就介紹到這了,更多相關(guān)vue 中的this.$get,this.$post等$的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue結(jié)合leaflet實(shí)現(xiàn)地圖放大鏡

    vue結(jié)合leaflet實(shí)現(xiàn)地圖放大鏡

    放大鏡在很多地方都可以使用的到,本文主要介紹了vue結(jié)合leaflet實(shí)現(xiàn)地圖放大鏡,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • vue-week-picker實(shí)現(xiàn)支持按周切換的日歷

    vue-week-picker實(shí)現(xiàn)支持按周切換的日歷

    這篇文章主要為大家詳細(xì)介紹了vue-week-picker實(shí)現(xiàn)支持按周切換的日歷,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Vue生命周期深入分析總結(jié)

    Vue生命周期深入分析總結(jié)

    Vue的生命周期就是vue實(shí)例從創(chuàng)建到銷(xiāo)毀的全過(guò)程,也就是new?Vue()?開(kāi)始就是vue生命周期的開(kāi)始。Vue?實(shí)例有?個(gè)完整的?命周期,也就是從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom?->?渲染、更新?->?渲染、卸載?等?系列過(guò)程,稱(chēng)這是Vue的?命周期
    2022-08-08
  • avue實(shí)現(xiàn)自定義搜索欄及清空搜索事件的實(shí)踐

    avue實(shí)現(xiàn)自定義搜索欄及清空搜索事件的實(shí)踐

    本文主要介紹了avue實(shí)現(xiàn)自定義搜索欄及清空搜索事件的實(shí)踐,主要包括對(duì)搜索欄進(jìn)行自定義,并通過(guò)按鈕實(shí)現(xiàn)折疊搜索欄效果,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • vue 修改 data 數(shù)據(jù)問(wèn)題并實(shí)時(shí)顯示操作

    vue 修改 data 數(shù)據(jù)問(wèn)題并實(shí)時(shí)顯示操作

    這篇文章主要介紹了vue 修改 data 數(shù)據(jù)問(wèn)題并實(shí)時(shí)顯示操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • vant picker+popup 自定義三級(jí)聯(lián)動(dòng)案例

    vant picker+popup 自定義三級(jí)聯(lián)動(dòng)案例

    這篇文章主要介紹了vant picker+popup 自定義三級(jí)聯(lián)動(dòng)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vue大文件分片上傳之simple-uploader.js的使用

    vue大文件分片上傳之simple-uploader.js的使用

    本文主要介紹了vue大文件分片上傳之simple-uploader.js的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Vue雙向數(shù)據(jù)綁定與響應(yīng)式原理深入探究

    Vue雙向數(shù)據(jù)綁定與響應(yīng)式原理深入探究

    本節(jié)介紹雙向數(shù)據(jù)綁定以及響應(yīng)式的原理,回答了雙向數(shù)據(jù)綁定和數(shù)據(jù)響應(yīng)式是否相同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-08-08
  • vue路由守衛(wèi)及路由守衛(wèi)無(wú)限循環(huán)問(wèn)題詳析

    vue路由守衛(wèi)及路由守衛(wèi)無(wú)限循環(huán)問(wèn)題詳析

    這篇文章主要給大家介紹了關(guān)于vue路由守衛(wèi)及路由守衛(wèi)無(wú)限循環(huán)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動(dòng)導(dǎo)入

    Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動(dòng)導(dǎo)入

    本文主要介紹了Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動(dòng)導(dǎo)入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06

最新評(píng)論