私はモバイルアプリケーションの開発にreact-nativeのjavascript es-06構文を使用しています。ここに私のコードは次のとおりです。javascriptの関数をオーバーライドしているときに、親クラスの関数がサブクラスの関数の代わりに呼び出されました。
スーパークラス:
export class ApiCallback {
onResponse = (responseJson) => {
console.log("super response")
}
onError = (error) => {
console.log("super error")
}
}
基本クラス:
export class LoginCallback extends ApiCallback {
onResponse(responseJson) {
super.onResponse(responseJson)
console.log(responseJson)
}
onError(error) {
super.onError()
console.error(error)
}
}
使用法:
export class AuthenticationInteractor {
doLogIn(loginCallback: LoginCallback) {
fetch("http://google.com",
{
method: "GET"
})
.then((responseJson) => {
loginCallback.onResponse(responseJson)
})
.catch((error) => {
loginCallback.onError(error)
})
}
}
ここで
new AuthenticationInteractor().doLogIn(new LoginCallback())
、代わりに、それは親クラスのonResponse()関数を呼び出すと
を印刷しています(onResponse()内のすべてのresonse JSONを印刷している)は、基本クラスのメソッドを呼び出します"スーパーレスポンス"
の結果は、基本クラスのonResponse()関数から得られます。
あなたはスーパークラス定義で割り当てを使用している理由はありますか?これはおそらく原因です。したがって、 'onResponse =(responseJson)=> {'の代わりにプレーンな 'onResponse(responseJson){'を使用して、サブクラスを定義するのと同じ方法です。 – RecencyEffect
ありがとう!それは私の問題を解決しました。 –
最初のスニペットは有効なES6ではありません。 – Bergi