早上还没到闹钟响的时间貌似就醒了,遂想继续睡回去。这睡回去之后我貌似做了一些不太好的白日梦,内容大概和我送修差不多一个星期的 iPad 有关系,好像他彻底没救了,3800 彻底打水漂了!虽然没醒来,但我能感受到在梦中的我是有多难过喔!
醒来看了下淘宝,对方还没有开始修我的机器,悬着的心暂时给松开了,也不知道情况最终会如何,接下来持续关注...
回到今天的工作,和上级说明了下情况,大概就是他愿意让我尝试下改善会议项目的渲染性能。我打算从我最熟悉的设备管理部分开始重写,从 React Provider 转 Zustand,然后简单做一些性能测试,对比一下状态更新后重绘的总耗时,理论上是越短越好,毕竟 Diff 的元素确实是变少了。
简单对比了下是没有什么问题的,而且还有一些别样的方式去进行性能优化,例如可以使用 Zustand 的 getState
方法获取实时的状态。在调用一些功能性函数的时候,就不需要通过 React State 的方式获取值,减少了整体重绘的可能性。
const onAudioError = () => {
const { failReason } = useDeviceStore.getState();
if (!failReason.audio) {
return;
}
// 无设备接入
if (failReason.audio.type === 'null') {
message.info("没有设备");
}
// 无权限(可能是系统也可能是浏览器)
else if (failReason.audio.type === 'denied') {
message.info("浏览器未授权");
}
};