要做消息列表的颜色切换

最近有一个需求是需要做消息列表的颜色切换,大概页面如下,通过颜色选择器去切换前面消息文本的颜色

图片图片后来产品说这个颜色选择器的图标不好看,所以换了一个图标来显示颜色选择器,于是页面变成了下面这样的效果,我把原本的颜色切换的图标隐藏起来,换了另一个图标代替图片图片满屏都是后面又有新的需求,消息可能会有很多,甚至铺满整个屏幕图片图片这会导致页面非常卡,为啥呢?因为每一项就有一个颜色选择器!太多颜色选择器了,我们可以审查元素,发现颜色选择器面板的 DOM 非常多!!图片怎么优化呢?其实就是因为颜色选择器太多了才导致的卡顿,那么,我们只需要保证整个页面只有一个颜色选择器即可!第一步:先在页面放一个颜色选择器第二步:当点击图标1时,将颜色选择器移动到对应位置第三步:当点击图标2时,将颜色选择器移动到对应位置第四步:以此类推图片Teleport很多人看到刚刚的优化手段,就想着使用 鼠标点击坐标定位 的方式去移动颜色选择器,其实不需要,因为Vue3已经为我们提供了一个现成的传送门组件Teleport我们需要先封装一个单例颜色选择器,确保整个页面只有这么一个,且使用 Teleport 将它包起来,并且他的图标是不可见的,这里渲染组件我们可以使用 h 方法图片我们需要先将 Item.vue 中的颜色选择器去掉,换成一个占位的地方,用来让颜色选择器传送接着我们在 Index.vue 中去将这个 单例颜色选择器 进行挂载图片我们需要将 Item.vue 中的颜色选择器去掉,换成一个占位的地方,用来让颜色选择器传送,而这个占位的地方我们需要保证是独一无二的,不然会造成传送出错,这里我使用了 lodash.uniqueId图片现在我们可以看到,整个页面只有一个颜色选择器了,非常好,整个页面瞬间变得不卡顿了!!!图片再来看看效果,发现符合我们的预期~图片适用于多 Tab 切换Teleport 还适用于很多场景的优化,比如多 Tab 切换,但是每一个 Tab 都是显示了同一个组件,这个时候你也可以使用 Teleport 去优化示例尽量简化,方便大家理解比如下面的例子,其实每一个 Tab 展示的都是同一个内容图片图片我们可以使用 Teleport 将内容包起来,并监听 Tab 的切换,进行动态传送图片结果也能达到预期效果图片结语我是林三心,一个待过小型toG型外包公

相关推荐
橙子家6 小时前
浏览器缓存之【身份与会话管理】:Cookies 和 Private state tokens
前端
最新资讯动态7 小时前
HDC 2026 | 对话鲸鸿动能:存量时代,品牌如何夺回营销“主动权”?
前端
最新资讯动态7 小时前
游戏出海,从产品走向体系
前端
最新资讯动态7 小时前
20人团队跑出百万DAU、大厂也来抢量:谁在鸿蒙生态跑出加速度
前端
最新资讯动态7 小时前
千万开发者背后,鸿蒙商业化的B面
前端
爱勇宝9 小时前
AI 时代:智商决定起点,情商决定走多远
前端·ai编程
kyriewen9 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
IT_陈寒10 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
徐小夕11 小时前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
一份执念11 小时前
uni-app 小程序分包限制处理与主包体积优化实战
前端·微信小程序