[Vue源码解析] 最佳实践

14 篇文章 0 订阅

[Vue源码解析] 最佳实践

1、列表属性和v-if、v-if-else、v-else中使用key

2、路由切换组件不变这是由于两个路由用的是同一个组件,由于组件复用,而不会进行重新渲染。

解决方法:

  • 在watch中监测$route的query值

  • 在router-view组件上添加key(不推荐)

3、为所有路由同一添加query

  • 使用全局守卫beforeEach,有指定query才放行,没有调用next(path+query)二次跳转

  • 使用函数劫持:拦截router.history.transitionTo方法

    const query = {referer: 'hao360cn'}
    const transitionTo = router.history.transitionTo		//保存原函数
    
    router.history.transitionTo = function (location, onComplete, onAbort) {		//对原函数改变指向,进行函数劫持
      location = typeof location === 'object'
      ? {...location, query: {...location.query, ...query}}		//将原本的query和我们要添加的统一query通过扩展运算符合并在一起
      : {path: location, query}  //没有query参数时手动添加query参数
      
      transitionTo.call(router.history, location, onComplete, onAbort)		将原函数释放回来,注意此时的location.query已经发生了我们所期望的改变。
    }
    

4、避免v-if和v-for一起使用

  • 过滤一个列表中的部分项时请使用计算属性

  • 过滤一个列表时请将v-if提到列表的副属性上去

5、为组件样式域有两种选择,scoped(避免使用元素选择器)和module(推荐)

6、在vuetemplate中自定义组件不能是自闭合组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值