Statistic组件数值不更新是怎么回事?
我在用 Ant Design 的 Statistic 组件展示一个动态变化的数值,但数据变了组件却没刷新。明明 state 已经更新了,页面上还是显示旧值。
我试过用 useEffect 监听数据变化,也确认了传进去的 value 确实变了,但 Statistic 就是不动。是不是它内部做了什么缓存?
相关代码大概是这样:
const [count, setCount] = useState(0);
useEffect(() => {
const timer = setInterval(() => {
setCount(prev => prev + 1);
}, 1000);
return () => clearInterval(timer);
}, []);
return <Statistic title="当前计数" value={count} />;
当组件的 key 保持不变时,React 会认为这是同一个组件,直接复用实例,不会触发重新渲染。你的 state 确实变了,但组件拿到的新 value 根本没机会重新渲染。
检查一下你的代码里有没有类似这样的写法:
如果有,去掉 key 或者改成动态的:
如果你确实需要 key 来触发某些重置逻辑(比如重置动画),那每次 value 变化时 key 也得跟着变。
你的代码本身逻辑没问题,setInterval 正常触发,count 正常更新,Statistic 组件本身也应该正常响应。排除掉 key 的问题,应该就OK了。