Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@3.7.2版本,useRequest的defaultParams失效,导致默认参数无法传入接口,引发线上报错 #1939

Closed
nuonuonuonuoyan opened this issue Oct 25, 2022 · 7 comments · Fixed by #2121
Assignees

Comments

@nuonuonuonuoyan
Copy link

nuonuonuonuoyan commented Oct 25, 2022

@3.7.2版本,useRequest的defaultParams失效,导致默认参数无法传入接口,引发线上报错

// 定义的接口api
import {request} from 'umi;
const service = async(params) => request('线上接口',{
params,
})

// 业务组件中使用
useRequest(service,{
defaultParams: {
id: 111,
}
})

这种写法失效!!! defaultParams的默认参数没有传递给接口,因此紧急使用了以下写法进行了修复:
useRequest(() => service({ id: 111 }))

@crazylxr
Copy link
Collaborator

你的写法好像有点问题。

改成这样

useRequest(service,{
  defaultParams: ["11"]
})

defaultParams 应该是个数组类型,你试试

@crazylxr crazylxr self-assigned this Oct 27, 2022
@nuonuonuonuoyan
Copy link
Author

你的写法好像有点问题。

改成这样

useRequest(service,{
  defaultParams: ["11"]
})

defaultParams 应该是个数组类型,你试试

换成数组确实可以了,但是这个改动。。之前的版本都是对象,是出于什么考虑换成数组的呢? 项目升级到此版本,使用这个参数所带来的改动太多了

@crazylxr
Copy link
Collaborator

一直是这样哦,没有改过呢。

@Chrisyjs
Copy link

我这边也遇到了,之前我也是一直是用对象形式,咋 3.7.2 版本突然不行了?

@1862
Copy link

1862 commented Nov 17, 2022

@crazylxr
在写错的情况下
v3.7.1 能拿到参数 https://codesandbox.io/s/ahooks-v3-7-1-vlkksp?file=/App.tsx
v3.7.2 拿不到参数 https://codesandbox.io/s/ahooks-v3-7-2-bgxfk3?file=/App.tsx

@seantech2000
Copy link

确实出问题了

@crazylxr crazylxr reopened this Nov 19, 2022
@crazylxr
Copy link
Collaborator

这个问题破案了,是因为在这个 pr #1936 里对构建产物做了优化导致的。

本来在 v3 的时候 defaultParam 其实就支持数组了,代码、文档、ts 类型都是这么多的,但是由于 babel 在处理的时候会对 对象类型做兼容,导致 用对象也不会报错,让用户误以为可以传对象。

在优化之后,babel 这边就不再做兼容,就导致之前错误的用法不能使用了。

这个问题目前我想的是还是编译成 es5,来兼容这个问题,让以前的代码不报错,在 v4 的时候重新编译成 es6,来避免升级之后错误的用法还生效。

不过最后还是期望大家按照文档来传参,我们永远会对文档负责。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants