keep-alive使用antd Drawer切换页面闪屏
时间: 2024-10-20 22:10:00 浏览: 86
Keep-alive是一种常用的网页或单页应用技术,用于保留组件的状态,在用户短暂离开或在不同路由间切换时不重新加载整个页面。在Ant Design (AntD)库中的`Drawer`组件中,如果你发现页面切换时存在闪屏现象,这可能是由于默认的浏览器行为或者是没有设置好`Drawer`的`destroyOnClose`属性导致的。
当你关闭一个`Drawer`并立即打开另一个时,如果`Drawer`组件没有正确地清除上一次的渲染状态,就可能导致新内容突然显示在旧内容之上,造成闪屏。要解决这个问题,你可以通过以下步骤配置`Drawer`:
1. 在`Drawer`组件的props中添加`destroyOnClose`属性,并将其值设为`true`:
```jsx
<Drawer
title="标题"
destroyOnClose // 添加这个属性并设置为 true
// 其他属性...
/>
```
这会让`Drawer`在关闭时销毁并重新创建,减少闪屏效果。
2. 如果需要在特定场景下禁用此功能,可以设置成默认关闭然后在需要时开启:
```jsx
<Drawer
defaultVisible={false}
visible={this.state.isDrawerOpen} // 控制开关
onClose={() => this.setState({ isDrawerOpen: false })}
>
// 内容...
</Drawer>
```
这样当`isDrawerOpen`变为`false`时,它会自动销毁而不是闪退。
阅读全文