fix: resolves useRquest debounce issue #2606
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[English Template / 英文模板]
🤔 这个变动的性质是?
🔗 相关 Issue
useRequest的debounceLeading和ready结合使用时不生效
💡 需求背景和解决方案
需求背景
useRequest的debounceLeading和ready结合使用时不生效
解决方案
![image](https://private-user-images.githubusercontent.com/32844198/350896965-009d8950-537b-413e-b4aa-b570ad5cb6f4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMDUyNzMsIm5iZiI6MTczOTMwNDk3MywicGF0aCI6Ii8zMjg0NDE5OC8zNTA4OTY5NjUtMDA5ZDg5NTAtNTM3Yi00MTNlLWI0YWEtYjU3MGFkNWNiNmY0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDIwMTYxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdmZTczY2JjZGFkMmRmMGE0ZWViOTk1MTVkNmU2Y2I2ZjIxZjkxZWQ3Yjg0OWNiYzIyMjViNmUxN2ZjZjNiMjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.c1-b5mzuLJXs6juVIq0YM3NJGyOIVUdOcsOdLnh-xwY)
①问题定位,核心原因是在useRequest在mount的时候,只会通过判断manual决定是否执行第一次:
因此,会在mount时,执行一次debounce的request动作,导致在debounceWait的时间里都无法执行。如果上面这个codebox的demo把debounceWait时间改成10s,将更容易复现。
②但是为什么执行了会不生效呢?也就是没有loading,也不会出现结果:
![image](https://private-user-images.githubusercontent.com/32844198/350897505-5f1bfa74-0c51-4831-a16a-5f48341bc11b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMDUyNzMsIm5iZiI6MTczOTMwNDk3MywicGF0aCI6Ii8zMjg0NDE5OC8zNTA4OTc1MDUtNWYxYmZhNzQtMGM1MS00ODMxLWExNmEtNWY0ODM0MWJjMTFiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDIwMTYxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFjOGE4NWRiNGMzNWJhZWI4NzQ0YTEyNjMyNzcxOThhMmYyYjMzODhjMjU4NzQwYjVjZmU5ZjlmZDExYWZiNDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5fV9hvIYthCYwSlLMXvJWywpYgvFGHFm25GmMnpJswo)
因为在这里第一次runASync时,拿到的回调至stopNow会根据ready设置为true,因此实际上是首次执行了一次方法,但这个方法被终止,但是debounceWait的效果还在。
③如何修复:
![image](https://private-user-images.githubusercontent.com/32844198/350899097-852cc861-2fcf-4811-90b0-def083708dd0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMDUyNzMsIm5iZiI6MTczOTMwNDk3MywicGF0aCI6Ii8zMjg0NDE5OC8zNTA4OTkwOTctODUyY2M4NjEtMmZjZi00ODExLTkwYjAtZGVmMDgzNzA4ZGQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDIwMTYxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZjNjFjNTA5OWFhNzg1ZWU1NzRkMDg1NGIwMzU3MWRlZTcwOGIyOWM5Y2UwNGFhMTRkZjk4ODM0OTUxN2QxNmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LxSW5IdEJw9bwJGzuXvKU04KnY0NQWZ4YVF6i0sdy0U)
在useRequest Mount的地方加上ready的判断,和stopNow判断保持一致。
修复Demo仓库
📝 更新日志
☑️ 请求合并前的自查清单