CJY0208 / react-router-cache-route

Route with cache for react-router V5 like <keep-alive /> in Vue
https://www.npmjs.com/package/react-router-cache-route
MIT License
1.16k stars 113 forks source link

【咨询】为什么 Updatable 内部的 Freeze 需要 Delay 1s #164

Closed youngBrain1893 closed 1 year ago

youngBrain1893 commented 1 year ago

问题描述: 由于 Freeze 需要 delay 1s,当路由从 A 切换到 B 时,页面 A 会先响应一次路由变更,然后再切换为 Freeze 状态 如果页面 A 依赖 url 的数据,这一次响应就会获取到新的 url 数据,而这个数据已经是页面 B相关的数据了

相关代码:Updatable/index.js

相关Demo:https://codesandbox.io/s/cache-route-demo-forked-p3xl27

看您在 react-activation/Keeper 里面的注释是为了保证后续流程的执行,针对于这种依赖 url 数据的场景有什么解决方案吗?

希望能得到您的回复,感谢

CJY0208 commented 1 year ago

主要考虑的是,useDidCache 之类的方法里,开发者可能要做一些事,例如关闭弹窗,暂停轮询之类的,如果在 cache 后立即对组件进行冻结,那么这些后置动作就无法进行了,所以给了 1s 的时间,足够处理大部分后置动作

你的场景,我能想到的方案是利用 useDidCache 获得一个 cached 状态,在依赖 url 的同时,也需要关注是否组件处于 cached 状态下

youngBrain1893 commented 1 year ago

主要考虑的是,useDidCache 之类的方法里,开发者可能要做一些事,例如关闭弹窗,暂停轮询之类的,如果在 cache 后立即对组件进行冻结,那么这些后置动作就无法进行了,所以给了 1s 的时间,足够处理大部分后置动作

你的场景,我能想到的方案是利用 useDidCache 获得一个 cached 状态,在依赖 url 的同时,也需要关注是否组件处于 cached 状态下

感谢回复,目前看起来确实也只有这种方式来处理,对业务上有一定的侵入,不过看下来改造成本还能接受