Ant Design 的 Tabs 切换时为什么内容会闪烁或重新渲染?
我在用 Ant Design 的 Tabs 组件,发现每次切换 Tab 时,对应的内容组件都会重新 mount,导致数据重新请求、输入框内容丢失。明明没用 forceRender={false} 啊?
我试过给每个 TabPane 加 key,也试过把子组件提出来缓存,但还是不行。是不是哪里配置错了?
const App = () => {
return (
<Tabs defaultActiveKey="1">
<Tabs.TabPane tab="Tab 1" key="1">
<MyForm />
</Tabs.TabPane>
<Tabs.TabPane tab="Tab 2" key="2">
<MyChart />
</Tabs.TabPane>
</Tabs>
);
}
forceRender。你提到没用forceRender={true},那肯定不行啊。直接在 Tabs 组件上加上这个属性:
另外提醒下,虽然这样会占用更多内存,但对用户体验来说效率更高,毕竟不用重复请求数据和重绘界面。
要是你还想进一步优化性能,可以把每个 Tab 的内容单独 memo 化处理,不过这就得看具体需求了。反正先把
forceRender打开准没错。