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

useRequest的debounceLeading和ready结合使用时不生效 #2581

Open
mzleman opened this issue Jun 26, 2024 · 5 comments
Open

useRequest的debounceLeading和ready结合使用时不生效 #2581

mzleman opened this issue Jun 26, 2024 · 5 comments
Labels
help wanted Extra attention is needed

Comments

@mzleman
Copy link

mzleman commented Jun 26, 2024

  const [ready, setReady] = useState(false);
  const { data, loading, run } = useRequest(getEmail, {
    debounceWait: 3000,
    debounceLeading: true,
    ready: ready
  });

上述代码在sandbox时调试时,发现debounceLeading偶现不生效,即有时候当ready切换到true时,getEmail不立即执行
20240626145126_rec_

偶现是当manual明确设置为false的时候,leading有时候能起作用😂

版本:3.8.0

@mzleman mzleman changed the title useRequest的debounceLeading和ready结合使用时不生效 useRequest的debounceLeading和ready结合使用时偶现不生效 Jun 26, 2024
@mzleman mzleman changed the title useRequest的debounceLeading和ready结合使用时偶现不生效 useRequest的debounceLeading和ready结合使用时不生效 Jun 26, 2024
@crazylxr
Copy link
Collaborator

你把你的 demo,链接贴一下呢

@crazylxr crazylxr added the 🤔 Need Reproduce We cannot reproduce your problem label Jul 11, 2024
Copy link

Hello @mzleman. Please provide a online reproduction by forking this link https://codesandbox.io/s/ok2fe or a minimal GitHub repository. Issues labeled by Need Reproduce will be closed if no activities in 3 days.

你好 @mzleman, 我们需要你提供一个在线的重现实例以便于我们帮你排查问题。你可以通过点击 此处 创建一个 codesandbox 或者提供一个最小化的 GitHub 仓库。3 天内未跟进此 issue 将会被自动关闭。

@mzleman
Copy link
Author

mzleman commented Jul 12, 2024

你把你的 demo,链接贴一下呢

https://codesandbox.io/p/sandbox/funny-varahamihira-7c5y38?file=%2FApp.tsx
看样子非必现?有点奇怪的。刷新页面时候容易复现

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Jul 16, 2024
@crazylxr crazylxr reopened this Jul 16, 2024
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Jul 20, 2024
@crazylxr crazylxr removed the 🤔 Need Reproduce We cannot reproduce your problem label Jul 22, 2024
@crazylxr crazylxr reopened this Jul 22, 2024
@crazylxr crazylxr added the help wanted Extra attention is needed label Jul 22, 2024
Copy link

Hello @mzleman. We totally like your proposal/feedback, welcome to send us a Pull Request for it. Please send your Pull Request to proper branch (feature branch for the new feature, master for bugfix and other changes), fill the Pull Request Template here, provide changelog/TypeScript/documentation/test cases if needed and make sure CI passed, we will review it soon. We appreciate your effort in advance and looking forward to your contribution!

你好 @mzleman,我们完全同意你的提议/反馈,欢迎直接在此仓库 创建一个 Pull Request 来解决这个问题。请将 Pull Request 发到正确的分支(新特性发到 feature 分支,其他发到 master 分支),务必填写 Pull Request 内的预设模板,提供改动所需相应的 changelog、TypeScript 定义、测试用例、文档等,并确保 CI 通过,我们会尽快进行 Review,提前感谢和期待您的贡献。

giphy

@ruixingshi
Copy link
Contributor

已定位到问题,核心原因是在useRequest在mount的时候,只会通过判断manual决定是否执行第一次:
image
因此,会在mount时,执行一次debounce的request动作,导致在debounceWait的时间里都无法执行。如果上面这个codebox的demo把debounceWait时间改成10s,将更容易复现。

但是为什么执行了会不生效呢?也就是没有loading,也不会出现结果:
image
因为在这里第一次runASync时,拿到的回调至stopNow会根据ready设置为true,因此实际上是首次执行了一次方法,但这个方法被终止,但是debounceWait的效果还在。

如何修复:
image
在useRequest Mount的地方加上ready的判断,和stopNow判断保持一致。

一个简单的修复后的demo仓库:https://github.com/ruixingshi/test-use-debounce

@crazylxr @mzleman cc @caorushizi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants