Closed Sharang-heng closed 2 months ago
可以考虑一下实现方式的转换,比如在根组件获取到 d
,然后通过 provide
注入方式注入 id
给 a, b, c
三个字组件。这样可能更友好一点。
而且,请求合并在一起然后分发,这个功能可能不是在 useRequest
层面去实现,可以考虑自己在 ajax
层面实现。如果需要并发请求,可能这个文档能帮助到你。
https://inhiblabcore.github.io/docs/hooks/useFetchs/#%E4%BB%A3%E7%A0%81%E6%BC%94%E7%A4%BA
可以考虑一下实现方式的转换,比如在根组件获取到
d
,然后通过provide
注入方式注入id
给a, b, c
三个字组件。这样可能更友好一点。
是的,可以先在外部获取到 d 请求的数据,然后提供给 a,b,c , 在 a b c 中使用 useRequest 的依赖收集功能和 ready, 当 d 中有 id 且存在的时候会自动发起请求 @Sharang-heng
可以考虑一下实现方式的转换,比如在根组件获取到
d
,然后通过provide
注入方式注入id
给a, b, c
三个字组件。这样可能更友好一点。是的,可以先在外部获取到 d 请求的数据,然后提供给 a,b,c , 在 a b c 中使用 useRequest 的依赖收集功能和 ready, 当 d 中有 id 且存在的时候会自动发起请求 @Sharang-heng
伪代码
useRequest(service,{ ready:!!id, refreshdeps:[id] })
Describe the bug
假设存在三个兄弟组件分别叫A、B、C,组件内部分别有a,b,c三个获取数据的请求,但是他们三个请求都依赖于请求d(因为a、b、c获取到的是id,需通过d请求获取到名称进行映射)。因此我分别在A、B、C组件的onMounted阶段发起a、b、c请求。函数形如
不知道是不是因为存在竞态取消,a、b、c理论上会发起三个d请求,但是实际上只有其中一个函数完成请求(假设为a),导致b和c函数的promise一直处于pending状态无法往下走,我原本的想法是给d设置staleTime让其他两个请求直接读取缓存,但似乎也没有效果。useRequest能不能提供一个重复请求合并的功能,即在一段时间内发起的重复请求, 仅请求一次, 并将请求结果分别返回给不同的发起者
Steps to reproduce
No response
System Info
Used Package Manager
npm
Validations