Ich interessiere mich für die Erstellung eines API-Wrappers und die Erweiterung von Axios mit es6-Klassen. Wie ist das möglich? Axios hat eine Methode .Create(), die Sie einen neuen axiosVerwendung der es6-Klasse zum Erweitern von Axios
class Api extends Axios {
constructor(...args){
super(..args)
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
Objekt generieren kann ich weiß, ich habe Zugang zu diesem let instance = axios.create()
.
Irgendwelche Gedanken?
Versuch 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)
Versuch 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)
ich hier das Problem nicht sicher bin? – Tuvia
@Tuvia das Problem ist, ich versuche, Axios zu erweitern und ich kann nicht :( – ThomasReggi
Sie können nicht erweitern ein "Objekt" in es6. Sie können einen Prototyp jedoch erweitern. Aber ich bin mir nicht ganz sicher, was Sie zu tun versuchen Eine Klasse (definiert durch es6) ist etwas, zu dem du 'new MyClass' machen musst, und das' MyClass' ist die Sache, die du erweitern kannst: – Tuvia