要做消息列表的颜色切换

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

图片图片后来产品说这个颜色选择器的图标不好看,所以换了一个图标来显示颜色选择器,于是页面变成了下面这样的效果,我把原本的颜色切换的图标隐藏起来,换了另一个图标代替图片图片满屏都是后面又有新的需求,消息可能会有很多,甚至铺满整个屏幕图片图片这会导致页面非常卡,为啥呢?因为每一项就有一个颜色选择器!太多颜色选择器了,我们可以审查元素,发现颜色选择器面板的 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型外包公

相关推荐
成都渲染101云渲染66665 小时前
如何在3ds Max中实现更快、更高质量的渲染
前端·javascript·人工智能
闲猫7 小时前
Spring AI 对接Deepseek ChatModel 聊天对话
java·前端·spring
自信的未来9 小时前
JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
java·前端·json
全栈前端老曹9 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
zhangxingchao10 小时前
AI大模型核心八:从 Agent Skill、长文档 RAG 到知识库更新与训练策略
前端·人工智能·后端
zhangxingchao10 小时前
AI大模型核心七:从 Workflow、RAG、记忆治理到幂等性
前端·人工智能·后端
gyx_这个杀手不太冷静11 小时前
Agent开发进阶指南(第 1 章):AI Agent 到底是什么?
前端·agent·ai编程
小小小小宇11 小时前
模型相关知识
前端
小小小小宇11 小时前
模型相关知识二
前端
IT_陈寒12 小时前
Python装饰器竟然偷偷改了函数名?这个坑我爬了三天
前端·人工智能·后端