react-router-cache-route
react-router-cache-route copied to clipboard
v1.12.1 useDidRecover拿不到最新的redux中的state
相关issure: https://github.com/CJY0208/react-router-cache-route/issues/115 相关文件: https://github.com/CJY0208/react-router-cache-route/blob/v1.12.1/src/core/Updatable.js
import { useSelector } from 'react-redux';
import { useDidRecover } from 'react-router-cache-route';
export default () => {
const stateA = useSelector((state: RootState) => state.stateA);
useDidRecover(() => {
console.log('did recover: ', stateA.count);
},[stateA.count]);
...
}
...
大致代码如上,当页面隐藏时全局store数据改变了,useDidRecover的effect没有更新(因为react-freeze的原因?),导致didRecover时拿到的是旧数据,目前尝试切回到v1.11.1一切正常
是的,应该是 react-freeze 的原因,我调整下 freeze 的时机,改为延迟冻结
试试 1.12.4
请问下如果redux的更新是在延迟冻结后的话,效果不是一样的吗,因为依赖的store的更新时机是人为操作的、不确定的
不太确定,按理来说 freeze 后组件就不再更新了,上边的代码如果获取不到最新值,也需要考虑可能是闭包问题
感觉不让缓存了的页面进行更新 很容易出现问题,就拿上面的代码来说,就算页面隐藏起来了,但是当全局的stateA.count更新了之后,应该是要重新触发调用useDidRecover,把新的callback传过去的。不仅是全局store这种情况,在页面隐藏之后,页面的任何props变化了,useDidRecover callback里面的都是旧的值。
升级到 1.12.4 还是拿不到最新的 state @CJY0208
更新了 1.12.5,发布当中,优化了 effect 的引用,可以不再传入 deps,尝试避免闭包问题
为什么我的1.12.5这样import会报错? import { useDidCache, useDidRecover } from 'react-router-cache-route';