11 个高级 Vue 编码技巧

本文介绍了11个高级Vue编码技巧,包括直接在模板中访问路由器子路由,避免繁琐的props传递,利用JavaScript的includes()简化条件判断,监听路由变化时自动滚动到顶部,创建全局实用方法,检测用户设备,聚焦表单输入,动态刷新组件,调用子组件方法以及自定义组件prop验证。这些技巧有助于提高Vue项目的代码质量和开发效率。
摘要由CSDN通过智能技术生成

v-for="(route, idx) in $router.options.routes.filter(

(routeItem) => routeItem.name === $route.matched[0].name

)"

使用此 v-for,您可以直接在模板中访问路由器树的所有子路由和单个路由元数据。我最近在一个项目中使用它来生成动态侧边栏导航组件。我在路由器中的某些路由上设置了一个 showInSidebar 元数据属性,我想隐藏在侧边栏中。我还能够自动生成所有侧边栏链接,而无需对每个链接进行编码。以下是我设置路由器路由的方法:38a57f4a5d232879aef4abf5a41f06c9.gif客户端还有一个额外的要求,他们不仅需要从路由器生成这些侧边栏路由,还需要从他们的 API 数据生成这些侧边栏路由。上述方法也以一种干净且可管理的方式解决了这个任务。我能够控制如何直接从路由器显示本地路由以及是否使用 API 提供的路由。我还用它来制作自动面包屑以显示用户的路线历史。在此下方(此处未显示)我还有一个单独的部分,允许侧边栏切换到使用从 API 发送的一组路由。为了触发它,我简单地使用了一个a v-if,如果它们存在就使用它们,否则它将恢复使用来自 vue-router 的路由。60dbc7f69cc52f2aff973d5de87cc5d5.png在我的 SideNavbar 组件模板中:07b3e1633e014a8a7d946e185711a484.png你可能已经注意到了exact-active-class代码:9efaa45ad1ad0ef02f302594ae4a4f9f.png有了这个,如果路由器链接的目的地与当前路由匹配,Vue 会自动设置一个活动类。这是一个很好的技巧,可以绕过我们用来实现这一点的典型逻辑,并将其缩短为exact-active-class=”className”。我经常将它用于导航栏链接——它既减少了模板大小,又使事情变得更干净。

3、从子组件访问父数据

有时,我们想从父级访问数据,但又不想经历传递 props 的麻烦。如果你只需要从a 的数据对象中快速获取一个值,你可以简单地通过引用parent的数据对象中快速获取一个值,你可以简单地通过引用parent 来完成:

// In parent

data() {

return {

message: ‘This is my message’

}

}

// In child template

{ { $parent.message }}
// <-- results in 'This is my message'

如果你想要在组件之间传递数据的更多好方法,Erik Hanchett 有一个很棒的视频,地址:https://www.youtube.com/watch?v=rKWSj3zfBAs&t=46s,你可以去了解一下,还有一些其他选项。

4、简化你的 :class 和 v-if 与逻辑.includes()

凭借 v-directives 的所有功能,很容易忘记我们仍然可以在我们的模板中访问纯 JavaScript 的高级功能。例如,

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值