Ant Design Tabs切换标签页后内容不更新怎么办?
在用Ant Design的Tabs做多语言切换时,发现切换标签页后页面内容没及时更新,手动刷新才显示最新数据。试过在onchange里调用setState和forceUpdate都没反应。
代码结构大概是这样:
<Tabs defaultActiveKey={lang} onChange={handleLangChange}>
<TabPane tab="中文" key="zh-CN">...</TabPane>
<TabPane tab="English" key="en-US">...</TabPane>
</Tabs>
效果函数是这样的:handleLangChange = (key) => this.setState({ lang: key }),但页面内容还是显示旧语言。控制台没有报错,状态确实更新了,就是视图不渲染。
解决方法很简单,给TabPane加上forceRender属性,让它切过去的时候强制渲染。代码改成这样:
加上forceRender之后,每次切换标签,里面的React组件就会正常渲染,你的语言内容就能实时更新了。
另外顺便提一句,如果你的内容是通过this.state.lang来控制展示的,记得确保子组件依赖的是这个state,而不是只在挂载时读取一次。函数式组件可以用useEffect监听变化,类组件的话componentDidUpdate里也可以做处理。
希望能帮到你,这问题看着小,卡起来真头疼。
activeKey绑定状态,别用defaultActiveKey:defaultActiveKey只初始化生效一次,切换时不会响应状态更新。