一周Vue小技巧

1.多路由页面用同一个vue组件

由于Vue内部的优化了你的应用程序 ,在切换页面会重用组件 ,而不是重新创建新组件 ,
因此在使用相同组件进行路由之间切换 则不会有任何改变

[{
path:'/a',
component:MyComponent
},{
 path:"/b",
 component:MyComponent
}
]

解决次问题 你需要在元素上添加:key属性 帮助路由器识别页面何时不同,在切换路由时更新你的内容

<router-view :key="$route.path">

2 $on(‘hook:’)帮助简化代码

删除事件侦听器是js一种常见的实践 ,因为它有助于避免内存泄漏并防止事件冲突,
在vue中添加/删除事件监听,一般在mounted 和beforeDestrory 的生命周期内

mounted(){
 window.addEventListener("resize",this.resizeHandler)
}
beforeDestroy(){
window.removeEventListener("resize",this.resizeHandler)
}

一般我们要单独声明这些钩子 这样做的问题 对于较大的组件 这些选项可能相隔数百行,查看Vue文档 可以看到有一个示例方法 $on用于侦听实例事件。Vue声明周期钩子会在触发时发出自定义事件 事件名称是hook,
hook + 本身的名称(hook:mounted)

因此可以简化挂载内部的添加和删除代码

mounted(){
  window.addEventListener("resize",this.resizeHandler)
  this.$on("hook:beforeDestroy",()=>{
	window.removeEventListener("resize",this.resizeHandler)
})
}

这样以为着我们不必定义两个生命周期 这样大大提高代码的可读性

3.$on 也可以监听子组件的生命周期hook

生命周期hook发出自定义事件,这一事实意味着父组件可以侦听子组件的声明周期hook
它将使用正常模式来侦听事件(@event),并且可以像其他自定义事件一样处理

<child-com  @hook:mounted="someFunction"/>

4 使用immediate:true 在初始化时触发观察者

watch: {
    title: (newTitle, oldTitle) => {
      console.log("Title changed from " + oldTitle + " to " + newTitle)
    }
}

Vue Watchers 默认情况下观察者不会在初始化时运行, 这可能意味着某些数据未完全初始化,如果需要在观察者在实例初始化后立即运行

watch:{
 title:{
   immediate:true,
   handler(newTitle,oldTitle){
   console.log(newTitle + newTitle)
}
}
}

5、你应该总是验证你的props

验证props是Vue中的基本实践之一,限制prop的确切格式 类型
vue的prop验证示例:

props:{
  status:{
    type:String,
   required:true,
   validator:function(value){
   return ['a','b','c'].indexOf(value) !==-1
}
}
}

6.将所有props传递给子组件

将父组件中的props传递给子组件
当你的项目具有非常分层的结构,它很方便
这很简单 – 你只需要记住你的实例属性

<child-comp v-bind="$props"></chil-comp>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值