最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3如何實現(xiàn)掛載并使用axios

 更新時間:2022年06月24日 11:08:40   作者:furfur-jiang  
這篇文章主要介紹了vue3如何實現(xiàn)掛載并使用axios,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue3掛載并使用axios

首先在main.js中引入axios并掛載到app.config.globalProperties上

axios配置文件放置./assets/js/axios

main.js

import {
    createApp
} from 'vue'
import App from './App.vue'
import './index.css'
import axios from './assets/js/axios';
const app = createApp(App);
app.use(router).use(ElementPlus).mount('#app')
app.config.globalProperties.$http = axios;

其次配置axios.js文件

axios.js

import axios from "axios";
import qs from "qs";
import {
    ElMessageBox
} from 'element-plus';
// axios.defaults.baseURL = ''  //正式
axios.defaults.baseURL = 'http://localhost:8089' //測試
//post請求頭
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8";
//設(shè)置超時
axios.defaults.timeout = 10000;
axios.interceptors.request.use(
    config => {
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);
axios.interceptors.response.use(
    response => {
        if (response.status == 200) {
            return Promise.resolve(response);
        } else {
            return Promise.reject(response);
        }
    },
    error => {
        ElMessageBox(JSON.stringify(error), '請求異常', {
            confirmButtonText: '確定',
            callback: action => {}
        });
    }
);
export default {
    post(url, data) {
        return new Promise((resolve, reject) => {
            axios({
                    method: 'post',
                    url,
                    data: qs.stringify(data),
                })
                .then(res => {
                    resolve(res.data)
                })
                .catch(err => {
                    reject(err)
                });
        })
    },
    get(url, data) {
        return new Promise((resolve, reject) => {
            axios({
                    method: 'get',
                    url,
                    params: data,
                })
                .then(res => {
                    resolve(res.data)
                })
                .catch(err => {
                    reject(err)
                })
        })
    }
};

最后在.vue中使用

通過getCurrentInstance拿到的ctx就有了$http可以調(diào)用

import {
  defineComponent,
  getCurrentInstance,
  reactive,
  toRefs,
} from "vue";
export default defineComponent({
  name: "demo",
  props: {},
  components: "",
  setup(props, context) {
    //引用全局變量
    const { ctx } = getCurrentInstance();
    console.log(ctx);
    let state = reactive({
      ruleForm: {
        username: "fur",
        password: "123",
      }
    });
    function submitForm() {
      ctx.$http.post("/login/xxx", ruleForm).then((res) => {
        //請求成功
      });
    }
    return {
      ...toRefs(state),
      submitForm,
    };
  },
});

vue全局掛載axios

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
 
  </div>
 
  <script src="./node_modules/vue/dist/vue.js"></script>
  <script src="./node_modules/axios/dist/axios.js"></script>
  <script>
    // 全局掛載axios:給Vue函數(shù)添加一個原型屬性$axios指向Axios
    // 好處是在vue實例或組件中不用重復(fù)引用Axios,直接用this.$axios就能執(zhí)行axios方法
    Vue.prototype.$axios = axios;
    var App = {
      template: `
        <div><button @click="sendAjax">發(fā)請求</button></div>
      `,
      methods: {
        sendAjax() {
          console.log(this.$axios);
        }
      }
    };
    new Vue({
      el: '#app',
      data() {
        return {
 
        }
      },
      template: `
        <App />
      `,
      components: {
        App
      }
    });
  </script>
</body>
</html>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于vue中 $emit的用法詳解

    關(guān)于vue中 $emit的用法詳解

    這篇文章主要介紹了vue中 $emit的用法,通過實例代碼給大家介紹了子組件和父組件的相關(guān)知識,需要的朋友參考下吧
    2018-04-04
  • vue實現(xiàn)打地鼠小游戲

    vue實現(xiàn)打地鼠小游戲

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)打地鼠小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流)

    vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流)

    這篇文章主要介紹了vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 在vue.js中抽出公共代碼的方法示例

    在vue.js中抽出公共代碼的方法示例

    這篇文章主要給大家介紹了在vue.js中抽出公共代碼的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Element Plus的el-icon怎么用

    Element Plus的el-icon怎么用

    在Element Plus里,Icon圖標(biāo)的用法和以前不一樣了,本文主要介紹了Element Plus的el-icon怎么用,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • Vue中父子組件如何實現(xiàn)傳值

    Vue中父子組件如何實現(xiàn)傳值

    這篇文章主要介紹了Vue中父子組件如何實現(xiàn)傳值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue-cli項目中使用echarts圖表實例

    vue-cli項目中使用echarts圖表實例

    在本篇文章里我們給大家分享了關(guān)于vue中使用echarts圖表的實現(xiàn)方法,有興趣的朋友們學(xué)習(xí)下。
    2018-10-10
  • Vue中的循環(huán)遍歷與key值原理解讀

    Vue中的循環(huán)遍歷與key值原理解讀

    這篇文章主要介紹了Vue中的循環(huán)遍歷與key值原理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 一文帶你搞懂Vue3?defineModel中的雙向綁定

    一文帶你搞懂Vue3?defineModel中的雙向綁定

    隨著vue3.4版本的發(fā)布,defineModel也正式轉(zhuǎn)正了,它可以簡化父子組件之間的雙向綁定,是目前官方推薦的雙向綁定實現(xiàn)方式,下面就跟隨小編一起深入了解一下defineModel的使用吧
    2024-02-02
  • vue3中的響應(yīng)式原理-effect

    vue3中的響應(yīng)式原理-effect

    這篇文章主要介紹了vue3中的響應(yīng)式原理-effect,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

南康市| 中宁县| 宁城县| 邳州市| 金乡县| 周口市| 淮南市| 容城县| 临桂县| 清苑县| 石门县| 密山市| 花垣县| 曲阳县| 枣阳市| 衡水市| 舞钢市| 客服| 仁寿县| 朔州市| 正安县| 枣强县| 蕉岭县| 广宗县| 莱西市| 泽普县| 济源市| 大姚县| 长春市| 镇江市| 柳江县| 庆城县| 呼伦贝尔市| 黑河市| 茌平县| 堆龙德庆县| 靖西县| 自治县| 贡嘎县| 山丹县| 宝坻区|