最新要闻
- 每日精选:专访|田耳:文学或有江湖,写作难以停歇
- 饭一定要吃七分饱才健康?新研究推翻传统观念 全球热闻
- 全球简讯:欧洲人最爱!蔚来ET5旅行版实车亮相:真心优雅
- 当前要闻:环保人士赢了?大众董事长演讲被蛋糕袭击 官方回应:新能源车保护环境吗?
- 环球视讯!只做了2年 日本家电巨头巴慕达退出手机市场:价格比iPhone还贵
- 北方今年首轮高温来袭:14日起多地冲击35℃高温
- 世界观速讯丨促进消费潜能释放 4月份汽车市场产销量同比快速增长
- 微软本周不会为 Win11 Canary 或 Dev 频道发布新版本|精选
- 重庆未来三年将实施水利项目超1800个 环球短讯
- 跑分最高的安卓旗舰!已有1000多人下单iQOO Neo8系列|天天快看
- NVIDIA一代神卡RTX 3060 Ti要停产了:清完库存即止
- 惊了!女网红用AI同时交往1000多个“男友” 年入4亿?-世界实时
- 电脑也能秒开3A大作!Win11或将引入Xbox Quick Resume功能-全球消息
- 世界速看:女大学生坐高铁拒绝补票刁难乘务长 后排乘客理论遭辱骂
- 团结就是力量合唱动作编排视频_团结就是力量合唱动作 焦点快报
- 辅助工具管理器_辅助工具管理器-焦点关注
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
记录--9个封装Vue组件的小技巧 每日讯息
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
组件是前端框架的基本构建块。把它们设计得更好会使我们的应用程序更容易改变和理解。在这节课中,分享一下在过去几年中工作中学到的 9 个技巧。
(相关资料图)
1. 你可能不需要创建一个组件
在创建一个组件之前,看看它是为了可重用性和为某些UI添加一个状态,还是仅仅为了组织和划分代码。
如果是后者,那么你就不需要创建它,因为它只会增加更多不必要的工作,比如传递props
和发射事件。
不仅如此,它还要求我们跳转到该文件以查看它所包含的内容,而不是直接在父组件中看到它,这就干净多了。
2. 使用插槽而不是 prop 来显示内容
假设有一个可重复使用的按钮组件,它通过props
获取文本。
如果想在其中显示一个图标,必须添加更多的道具,如
并更新组件以显示该图标。
但有了插槽,我们就可以在每次使用该组件时,以想要的方式显示标签:
Delete Item
或者你只需要把某个单词加粗。对于插槽,可以直接在文本中使用标记,而不是在组件中解析它。
3. 将该组件与触发它的因素分组
有时有两个独立的组件在某种情况下一起使用。最好把它们放在一个新的组件中,这样重复使用和移动它们更容易。
一个常见的例子是 Modal
组件。我们通常在点击一个特定的按钮时显示Modal
。与其在每次我们想重用它(或把它移到其他地方)时添加showModal
状态和导入modal与它的按钮,不如有一个单一的组件来显示按钮,当用户点击时,它显示相关的modal。
Create Item <script setup>const showModal = false</script>
4. 使用 teleport,从任何地方显示固定位置的元素
继续前面的例子,如果我们想正确地显示 modal ,我们需要确保模态使用正确的z-index
,并且它在HTML代码中显示在正确的位置,所以它总是显示在页面上所有东西的上面。
我们可以通过直接将 modal 显示为元素的一个子元素来轻松地避免这个问题,无论我们在组件结构中使用它。
Teleport组件使我们能够做到这一点。
我们所要做的就是用
来包装 modal 组件。
这个组件是Vue 3内置组件的一部分。如果你使用的是Vue 2,请查看PortalVue。
5. 在一个对象中分组相关的 props
组件的 prop 列表是组件界面的一个主要部分。接口越清晰,就越容易使用和推理。
改进 prop
列表的一个方法是将相关的属性分组在一起。以这个组件为例:
我们需要花几秒钟时间来了解这里有哪些/>
props
与帖子(post )相关。但我们可以像这样把与帖子相关的props
分组,使之更加清晰。所以现在我们很快就知道,layout
不是 post
数据的一部分。
不仅如此,我们还通过这种方法使更新 props
变得更加容易。例如,添加或删除与帖子相关的props
,不需要我们更新组件的 props
列表。
6. 赋予每个循环item,赋予自己的状态
创建一个新的组件的一个很好的理由是给一块用户界面提供它自己的状态。我们需要这样做的一个常见的地方是在v-for
循环中:
<script setup>const checkedItems = ref(items.map(item => item.checked))</script>
为了跟踪检查过的 items
,我们不得不创建一个数组,并用 items
的初始值来填充它。但是这段代码还不够强大。为了让它变得更好,我们必须让 items
通过它们的id
而不是index
来访问,因为 index
是不可靠的,可以改变。例如,如果你添加一个支持通过拖放来重新排列items 的功能呢?
为了简化这段代码,我们可以引入一个新的组件,为每个 item
保存一个状态。像这样:
Item
组件内容如下:<script setup>const props = defineProps({ item: Object })const checked = ref(props.item.checked)</script>
这种方法的另一个好处是,我们把所有 item 的相关数据、计算属性和方法都加在一个地方,便于理解和改变。
7. 尽可能地将加载数据移至其用户界面附近
无论你是用GraphQL还是其他API加载,最好把代码放在尽可能接近使用它的用户界面的地方。这有两个原因:
移动带有数据的UI组件变得更加容易。只需移动该组件,而无需寻找其依赖关系。
当所有的碎片被放在一个地方时,总是更容易理解代码--可以看到用户界面和它的数据来自哪里。
有时,有多个组件使用同一个获取的数据。在这种情况下,可以将获取的代码上移一级。因此,会有一个父组件,在那里获取数据,还有一个子组件,然后把数据传递给它。
但一定要确保它是一个单一的层次。如果不是,那就寻找一种方法来改进你的组件设计和它们之间的关系。
8. 纯粹的UI组件不应访问应用程序的状态
有两种类型的前端组件:纯UI组件和特定应用组件。
纯粹的UI组件是像按钮、输入框等。它们不应该知道关于应用程序的任何事情。它们的工作仅仅是为了显示UI--它们通过 props 获取数据。
特定于应用程序的组件是知道应用程序状态的组件,无论是本地状态还是全局状态(通过状态管理库,如Pinia)。
分离这些组件使得在应用程序的其他地方,甚至在其他应用程序中重用UI组件更加容易。
如果你正在构建自己的UI组件,这个技巧也适用。如果你使用的是外部库,如 Vuetify
或Quasar,那么你就不必担心这个问题--这些组件在设计时就考虑到了这一点。
9. 不要在组件中指定 width 或 margin
当创建一个组件时,你应该把它看作是一块UI,可以像其他本地元素一样使用。
让用户指定组件周围的空间是实现这一目标的好方法。
假设你的组件在其根元素上有一个顶部边距,而用户想把它显示在某个元素下面,但没有顶部边距。要做到这一点,用户必须设置一个与组件的margin
相同的负margin
,比如margin-top: -50px;
更不用说在某些情况下,用户必须与选择器的特异性相匹配(或者可能使用!important
)。
而宽度也是如此。如果用户想让该组件具有响应性,他们必须覆盖其宽度和最大宽度。
因此,通过不在组件内部设置宽度和边距,总是给用户这种控制是有意义的。
代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
来源:tahazsh.com/blog/vue-co…
本文转载于:
https://juejin.cn/post/7158969880362876964
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
关键词:
记录--9个封装Vue组件的小技巧 每日讯息
CH32内部参考电压的使用-即时焦点
全球头条:【金融街发布】外汇局:一季度货物贸易顺差处于历史同期较高水平
每日精选:专访|田耳:文学或有江湖,写作难以停歇
饭一定要吃七分饱才健康?新研究推翻传统观念 全球热闻
全球简讯:欧洲人最爱!蔚来ET5旅行版实车亮相:真心优雅
当前要闻:环保人士赢了?大众董事长演讲被蛋糕袭击 官方回应:新能源车保护环境吗?
环球视讯!只做了2年 日本家电巨头巴慕达退出手机市场:价格比iPhone还贵
北方今年首轮高温来袭:14日起多地冲击35℃高温
世界观速讯丨促进消费潜能释放 4月份汽车市场产销量同比快速增长
手写Promise教程_then方法|今日热门
Json序列化对象后,使用Lombok后属性xAxis大写变成小写xaxis解决方法-天天时讯
微软本周不会为 Win11 Canary 或 Dev 频道发布新版本|精选
重庆未来三年将实施水利项目超1800个 环球短讯
跑分最高的安卓旗舰!已有1000多人下单iQOO Neo8系列|天天快看
NVIDIA一代神卡RTX 3060 Ti要停产了:清完库存即止
惊了!女网红用AI同时交往1000多个“男友” 年入4亿?-世界实时
电脑也能秒开3A大作!Win11或将引入Xbox Quick Resume功能-全球消息
世界速看:女大学生坐高铁拒绝补票刁难乘务长 后排乘客理论遭辱骂
团结就是力量合唱动作编排视频_团结就是力量合唱动作 焦点快报
如何注册appuploader账号
【申请教程】ChatGPT访问互联网插件-焦点信息
夺冠秘诀?华为软件精英挑战赛两届冠军这样复盘比赛经验
当前速讯:没关系,前端还死不了
Java设计模式【单例模式】 当前速读
【新华500】新华500指数(989001)12日收跌1.31%_每日消息
辅助工具管理器_辅助工具管理器-焦点关注
东莞一锂电池厂深夜大火:照亮整个天空 无人伤亡
部分男厕改女厕引不满 四川大学再回应:进一步完善优化
汶川地震15周年 微信地震预警功能四川上线:秒级预警
世界今热点:《庆余年2》海报疑似抄袭 海报设计公司致歉
别说“刹车失灵”了!特斯拉回应大规模召回:降低交通事故概率
环球热文:PTP主时钟(时间同步装置)是怎样实现时钟同步的?
MSCI中国指数季度调整出炉 新纳入53只标的|全球速看料
【天天热闻】4月MPV销量排名出炉 别克GL8大战腾势D9 受伤的是五菱宏光
0糖0脂 清新甜润:平仄青柑乌龙茶12瓶39元
自研半固态技术!蔚来1000公里续航车型申报:比宁王麒麟电池还猛 世界热头条
特斯拉FSD再不来真没机会了 比亚迪出手:智能驾驶年内上车 每日快报
榴莲涨到39.9元/斤 网友直呼吃不起 盒马回应:货源少了
袋鼠云产品功能更新报告05期|应有尽“优”,数栈一大波功能优化升级!
环球快报:易基因:DNA甲基化和转录组分析揭示野生草莓干旱胁迫分子调控机制|植物抗逆
今日讯!NES 系统架构
环球热资讯!被任天堂拉黑媒体发声:有人给《塞尔达传说:王国之泪》打6分很好
世界今日报丨法拉第晒财报 贾跃亭真成了!FF:已生产40辆FF91 百万豪车买不买?
三次输错密码后,系统是怎么做到不让我继续尝试的?|全球短讯
在C#中使用默认值初始化字符串数组的3种方式
世界热头条丨OPPO终止ZEKU芯片业务:这是一个艰难的决定!
天天看热讯:OPPO终止自研芯片业务!小米王化:确实不容易
哪吒汽车CEO:电吸门是脑残无用设计 出门基本不动手的人才用-当前速看
又菜又爱玩 加塞不成一路别车:结局笑出了声!|最新资讯
天天视点!签约保底要400万?孟羽童回应董明珠给百万年薪:在格力月薪没过万 工作21小时
环球头条:开源.NetCore通用工具库Xmtool使用连载 - 随机值篇
JDK8 新特性之新的日期&时间API,一篇讲清楚!
智能化生产应用搭建的实战案例 世界微头条
精彩看点:echarts的散点图和中国地图配合使用
【经验分享】最新Microsoft Edge Dev游览器游览Flash网页的办法_今日聚焦
iPhone/iPad全系可用:闪魔MFi苹果认证线21.8元大促 世界简讯
4月轿车销量排名出炉 燃油车新能源“混战” 好戏即将开场
环球时讯:某日系车一把手摊牌了:现在最害怕比亚迪
格局有了!SteamDeck官方庆祝ROG Ally开卖
精彩看点:深圳某公司母亲节放假3天不调休:和妈妈度过完整的母亲节
驾特斯拉遭遇车祸后 林志颖现身珠海首次参加赛车比赛:状态良好
战斗力爆表!无人机航拍时被鹰叼走:画面剧烈晃动
高通骁龙8 Gen2下放!一加Ace2 Pro曝光
曾盛赞比亚迪股票的巴菲特又减持了!本人回应:不想跟马斯克的特斯拉竞争
不止安装失败!Win11 KB5026372更新出现诸多问题 天天观天下
当前短讯!【转】为什么 TCP 建立连接需要三次握手
快看:Linux驱动开发笔记(三):基于ubuntu的helloworld驱动源码编写、makefile编写以及驱动编译加载流程测试
Java设计模式-适配器模式
“原神玩家”和“塞尔达玩家”打起来了?不过是恶臭互联网的又一次狂欢_世界新消息
别了机械硬盘?全固态玩家转向了当“垃圾佬”
全系2.0T+8AT比BBA香多了!新款林肯冒险家上市:24.58万起
环球即时看!最大96GB内存不是梦!笔记本将迎来单条48GB DDR5内存
7499元 华硕天选4R游戏本上架:锐龙7-7735H、165Hz高刷
取代C++!微软改用Rust语言重写的Win11内核:正式来了
中药成香饽饽! “药茅”片仔癀20年涨价18次 专家称没病别跟风买_全球快资讯
多省加入封杀行列!老头乐销冠雷丁汽车申请破产 创始人被曝身居海外
SSD能有多便宜:2TB新品不到700元!长江存储232层原片颗粒加持
全球微资讯!Windows7 上运行docker实战
4月份以来17家银行下调存款利率 有望助推债市继续走牛 聚焦
美债上限谈判无进展 债务违约风险加大-环球速讯
沙特等减产石油 美国被逼补库存:印度捡漏俄油占大便宜 2022年省下50亿美元
当前资讯!国内第一!深圳要打造5G-A之城 全市5G网速平均必500Mbps 上行下载更狠
焦点热议:1000W用户1Wqps高并发签到系统的架构和实操
学系统集成项目管理工程师(中项)系列21a_整体管理(上)
长沙霸占车位车主致歉 栏杆拆除:双方均再次道歉 从没想会被网暴-环球今亮点
众望所归!马斯克宣布卸任推特CEO:神秘女子将接班
狗狗失踪7年后回家 主人煮饺子庆团圆:网友感慨万物皆有灵
IGN 10分新神作!《塞尔达传说:王国之泪》港服日服已正式解锁
热消息:刘强东真兄弟!20年投入员工福利近500亿、建设公寓2.5万套
【天天播资讯】百度的“New Bing”终于来了!但别高兴得太早
全球看热讯:苹果年度跳水王!M2版Mac mini降到3399元了:不用领券
当前动态:Python学习之二:不同数据库相同表是否相同的比较方法
中芯国际人事再变动 刘训峰担任副董事长:基本年薪334万元 世界信息
性能逼近PS5 ROG掌机正式发布:首发锐龙Z1处理器 畅玩3A大作-天天观速讯
两个妈妈!英国首批三亲婴儿诞生:体内有三个人的DNA
[Linux] 如何查看Centos用户登陆记录?[转载]_全球即时
今日热讯:【财经分析】REITs二级市场止跌回稳 机构看好高速板块后续表现
5月26日上映!迪士尼《小美人鱼》内地版配唱阵容官宣:黄绮珊领衔 短讯
环球今亮点!任天堂《塞尔达传说:王国之泪》获超低评分:太复杂玩不进去