私はAPIラッパーを作成し、es6クラスを使用してAxiosから拡張することに興味があります。これはどのように可能ですか? Axiosは新しいaxiosは私がこのlet instance = axios.create()
へのアクセス権を持って知っているes6クラスを使ってAxiosを拡張する
class Api extends Axios {
constructor(...args){
super(..args)
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
オブジェクトあなたが生成することを可能にする方法の.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)
試み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)
私はここでの問題を確認していませんか? – Tuvia
@Tuvia問題はAxiosを拡張しようとしているのですが、できません:( – ThomasReggi
あなたはes6で 'object'を拡張することはできませんが、プロトタイプを拡張することはできますが、あなたが 'new MyClass'を実行しなければならないクラス(es6で定義されています)と' MyClass'はあなたが拡張できるものです – Tuvia