react-activation
react-activation copied to clipboard
使用缓存后导致antd Modal页面切换无法关闭
未使用缓存的时候,切换路由组件会销毁,里面的Modal也会跟着销毁。 使用缓存,目前方案是在useUnactivate这个钩子中设置控制Modal显隐的state为false,但是发现并不生效,Modal并未销毁,state未更新。是离开后就没法更新组件状态了吗?大佬有啥好的解决办法吗,手动控制路由跳转前销毁Modal不太行
useUnactivate(() => {
setShowDialog(false);
console.log('路由缓存隐藏啦', currentRoute);
console.log(getCachingNodes());
});
useEffect(() => {
console.log('showDialog变化了', showDialog);
}, [showDialog]);
{showDialog && (
<Modal
title='选择员工/用户'
afterClose={() => console.log('关闭啦')}
visible={staffModalVsb3}
footer={null}
width={1060}
onCancel={() => setStaffModalVsb3(false)}
>
</Modal>
)}
看看是不是和 #240 类似?
我遇到过,目前的解决方案是把modal挂载在dom上而非全局上面
看看是不是和 #240 类似?
我这个弹窗是一定要挂在body下面的,不然会被遮住,所以不太一样。像这种气泡我都像你说的那样处理了,但是目前的弹窗没法那样处理,我在想这个缓存能不能里面部分内容不缓存呢?像这样
不知道when是不是这个意思
不知道when是不是这个意思
when 属性不能实现你说的这个功能,目前 KeepAlive 还没有这类功能
按理来说在 useUnactivate 里调用 setVisible(false) 应该是能生效的,不太了解你的场景为什么不行,可以做一个复现 demo 吗?我看看是什么原因
尝试autoFreeze:false,我反正是解决了
尝试autoFreeze:false,我反正是解决了
能提供相关代码吗
挂在body上的弹出层有这个问题,蹲一个解决方案