如何在Vue js中全局分配Axios?

时间:2019-12-10 06:04:53

标签: vue.js vuejs2 vue-component

如何在Vue js中全局分配Axios?

我正在尝试加载Axios,以便可以在任何组件中访问它。

我正在尝试如下:

main.js

   id col_x   rn col_y
0   1   h11  1.0    h1
1   2    h2  1.0    h2
2   3    h%  1.0    h3
3   3    h3  2.0   h33
4   4    h4  1.0    h4
5   6    h6  1.0    h6

home.js

import axios from 'axios'
Vue.prototype.$axios = axios
  

index.vue?6ced:203未捕获(已承诺)TypeError:无法读取   未定义的属性“ $ axios”

2 个答案:

答案 0 :(得分:1)

尝试一下:

install(vue, opts) {
      vue.prototype.$axios = $axios;
    }

如果需要全局,请Vue.use($axios)

答案 1 :(得分:1)

我认为您正在寻找这样的东西:

buyers(data) {
  return this.$axios.get(`/buyers?${data}`)
    .then(response => {
      return response.data
    })
    .catch(error => {
      throw error.response.data
    })
  })
}

通常,如果您发现自己使用构造函数创建了一个新的Promise,则可能是您做错了什么。仅在包装不使用Promises的其他代码时才需要这样做。

您看到的错误的原因是额外的函数更改了this的值。每次输入新功能时,this的值都会改变。

您还可以通过更改以下行来修复它:

return new Promise(function (resolve, reject) {

对此:

return new Promise((resolve, reject) => {

使用箭头函数将保留周围的this值,使其仍引用该组件。