You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
前段时间用了TanStack Query,感觉越用越糊涂
第一个:管理isLoading,data,error的状态
这个就是useRequest的基础功能,query无法是有更喜欢的状态,可以把loading和error拆得更开,但使用场景真的太少了
第二个:轮询、分页、无限加载
这些ahooks也有,用起来也没区别
第三个:数据同步
比如重进页面刷新,先不说这个ahooks也好实现,这个功能还蛮蛋疼的,因为是默认开启的,一般人啥也不做,可能一进页面就刷新十个接口,没啥用处还浪费资源,所以我们用的时候一般都不开启,或者配合失效时间(另一个恶心的点)
而且90%的应用都没有,说明真的不是很必须
第四个:数据重新加载
比如分页加载,用户加载了10次,然后这时候数据刷新,应该也得自动加载10次的数据。
这个ahooks好像还没有,自己做的话,会相对麻烦,这一个功能倒是可以迁移下
因为mutate修改数据不是很『同步』,从服务端拉取全部新数据比较合理
然后如果只拉取第一页,对用户体验影响又特别大
第五个:缓存
这个ahooks也有,基础的就够了
第六个:乐观更新
这个是mutate加数据重新加载加数据回滚,还是很不错的
用户体验确实不错,但属于锦上添花了
第七个:Mutations
这个没啥,都有,只是多个概念而已
第八个 queryKey
这个理论上结合了 cacheKey和refreshDeps
有好有坏
第九个 竞态/并发
...
而且Query上手是真的麻烦,可是我们真的用得到吗?或者说真的不能简单解决吗?
比如数据加载,乐观更新... 90%的场景下mutate就行了,特殊情况特殊处理也没问题,但是如果为了这些功能强行用Query那就麻烦了
90%满足请求就行
加一点缓存来优化列表加载速度挺好,但没有影响也不会特别大,除非接口资源消耗大或者返回慢(很少情况)。而且一但用了缓存就得自己管理缓存时间,这一点真的非常痛苦... 如果是普通不涉及用户的查询接口那有用,但是现在的应用几乎都是跟用户相关的,每个用户更新频率是不可控的,缓存和失效时间等于没有
和服务器同步这个,理想是好的,但是带了很多代价,而且效果几乎约等于直接刷新
提升用户体验,比如乐观更新、数据占位,锦上添花但是使用麻烦,不如不要
Beta Was this translation helpful? Give feedback.
All reactions