Tho*_*ggi 7 javascript axios es6-class
我对创建 API 包装器并使用 es6 类从 axios 进行扩展很感兴趣。这怎么可能?axios 有一个方法 .create() 可以让你生成一个新的 axios 对象
class Api extends Axios {
constructor(...args){
super(..args)
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以访问这个let instance = axios.create()。
有什么想法吗?
尝试1
import axios from 'axios'
const Axios = axios.create()
class Api extends Axios {
constructor (...args) {
super(...args)
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
let api = new Api()
api.cancelOrder('hi')
.then(console.log)
.catch(console.log)
Run Code Online (Sandbox Code Playgroud)
尝试2
import axios from 'axios'
class Axios {
constructor () {
return axios.create()
}
}
class Api extends Axios {
constructor () {
super()
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
let api = new Api()
console.log(api.__proto__)
api.cancelOrder('hi')
.then(console.log)
.catch(console.log)
Run Code Online (Sandbox Code Playgroud)
axios目前不导出Axios其内部使用的类。
该.create()方法仅实例化一个新实例。
// Factory for creating new instances
axios.create = function create(defaultConfig) {
return new Axios(defaultConfig);
};
Run Code Online (Sandbox Code Playgroud)
我创建了一个导出该类的 PR Axios。
https://github.com/reggi/axios/commit/7548f2f79d20031cd89ea7c2c83f6b3a9c2b1da4
还有一个 GitHub 问题:
https://github.com/mzabriskie/axios/issues/320
| 归档时间: |
|
| 查看次数: |
16516 次 |
| 最近记录: |