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.14k stars 110 forks source link

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

Closed youngBrain1893 closed 12 months ago

youngBrain1893 commented 12 months 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 12 months ago

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

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

youngBrain1893 commented 12 months ago

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

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

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