React 项目中如何准确监控组件加载性能?
我在用 React 做一个数据看板页面,想监控某个图表组件的加载耗时,但用 performance.now() 测出来的时间有时候是负数或者特别小,根本不对。是不是我用的方式有问题?
目前我是这样写的:
useEffect(() => {
const start = performance.now();
// 模拟异步加载数据
fetchData().then(() => {
const end = performance.now();
console.log('加载耗时:', end - start);
});
}, []);
performance.now()的测量起点不对。组件加载包含好几个阶段:初始化、渲染、数据获取和最终的渲染完成。你现在在 useEffect 里才开始计时,但实际上组件已经经过了初始渲染阶段。
我建议这样改:
这里有两个关键点:首先把计时起点放到组件创建时而不是数据请求时;其次要分开测量数据加载时间和组件整体渲染时间。这样就能得到更准确的结果了。
记得用
console.time和console.timeEnd也能达到类似效果,而且可读性更好。不过我当时嫌麻烦没用这个...注意加上错误处理,防止 fetchData 失败导致的异常。这样应该能更准确地测量加载时间。