From 2254e73cf76f1bc95d4850211e3fa34acae50136 Mon Sep 17 00:00:00 2001 From: zjx0905 <954270063@qq.com> Date: Fri, 7 Apr 2023 15:18:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20axios.fork()=20?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=AE=BF=E9=97=AE=E7=A7=81=E6=9C=89=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/axios.ts | 9 ++++++++- test/axios.api.test.ts | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/axios.ts b/src/axios.ts index 7c48b9c..3fabcb9 100644 --- a/src/axios.ts +++ b/src/axios.ts @@ -89,7 +89,14 @@ function createInstance(defaults: AxiosRequestConfig): AxiosInstance { } Object.assign(axios, instance); - Object.setPrototypeOf(axios, Object.getPrototypeOf(instance)); + Object.setPrototypeOf( + axios, + Object.assign(Object.getPrototypeOf(instance), { + // axios.fork 内部调用了 instance 的私有方法,无法直接访问私有方法 + // axios.fork 调用时 this 重新指向 instance + fork: instance.fork.bind(instance), + }), + ); return axios as AxiosInstance; } diff --git a/test/axios.api.test.ts b/test/axios.api.test.ts index 53357c3..fba7fb6 100644 --- a/test/axios.api.test.ts +++ b/test/axios.api.test.ts @@ -118,4 +118,19 @@ describe('src/axios.ts', () => { }); }); }); + + test('应该可以获取 URI', () => { + expect( + axios.getUri({ + url: 'test', + }), + ).toBe('test'); + }); + + test('应该可以派生领域', () => { + const a = axios.fork({ + baseURL: 'test', + }); + expect(a.defaults.baseURL).toBe('http://api.com/test'); + }); });