Skip to content

Commit a7f69d4

Browse files
committed
fix: urlPrefix is spliced repeatedly
1 parent df99658 commit a7f69d4

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/api.js

+19-10
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,34 @@ const createURL = (urlPrefix, url) =>
1111
: urlPrefix
1212

1313
function configToCaller(axios, urlPrefix, config) {
14+
// 如果配置非函数,则不需要每次调用接口都重新计算 URL
15+
let url
16+
if (!(typeof config === 'function')) {
17+
url = createURL(urlPrefix, config.url)
18+
}
19+
1420
return config
1521
? (payload, payloadAs) => {
16-
const configComputed = typeof config === 'function' ? config(payload) : config
22+
let configComputed = config
23+
if (typeof config === 'function') {
24+
configComputed = config(payload)
25+
url = createURL(urlPrefix, configComputed.url)
26+
}
1727

1828
if (payload) {
1929
payloadAs ??= METHODS_WITH_REQUEST_BODY.includes(configComputed.method?.toUpperCase() || '')
2030
? 'data'
2131
: 'params'
22-
if (payloadAs === 'data') {
23-
configComputed.data = payload
24-
}
25-
else if (payloadAs === 'params') {
26-
configComputed.params = payload
27-
}
2832
}
2933

30-
configComputed.url = createURL(urlPrefix, configComputed.url)
31-
32-
return axios(configComputed)
34+
return axios({
35+
...payload && {
36+
...(payloadAs === 'data' && { data: payload }),
37+
...(payloadAs === 'params' && { params: payload }),
38+
},
39+
...configComputed,
40+
url,
41+
})
3342
}
3443
: () => {}
3544
}

0 commit comments

Comments
 (0)