美文网首页
Vue项目近期遇到的几个小问题

Vue项目近期遇到的几个小问题

作者: 叫我魏大川 | 来源:发表于2020-03-02 15:59 被阅读0次

1:连续点按按钮的300ms延迟问题导致的卡顿现象。

这个算是移动web方面的历史遗留问题,与手机端web双击放大有冲突。

“假定这么一个场景。用户在 iOS Safari 里边点击了一个链接。由于用户可以进行双击缩放或者双击滚动的操作,当用户一次点击屏幕之后,浏览器并不能立刻判断用户是确实要打开这个链接,还是想要进行双击操作。因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕。”

这就是产生问题的原因。

解决方案五花八门,但是比较实用且有效的一条是使用FastClick这个库,轻量级的专门为解决这个问题的库。
参考文档:https://zhuanlan.zhihu.com/p/92321125

2: 场景:活动等类型的页面中经常使用到弹出框,弹出框中如果是需要很精细的大图时,就会有很明显的加载卡顿现象,特别是网不好的时候。

解决方案:v-if 配合v-show,让弹出框控件提前加载,例如,页面加载完成后,在mounted中通过v-if设置参数,加载上控件。在真正需要展示弹窗控件时,比如中奖接口提示中奖,再将v-show设置为ture。这样基本可以避免掉因加载图片导致的卡顿问题。

3: 场景:列表进入详情后再返回,刷新了页面。怎样缓存起当前的列表页不让刷新呢?

解决方案:启用active。但有个问题需要注意:如果前页面有监听事件或者定时器等,记得在activated、deactivated中重启、移除或刷新。比如通常列表中会有的laodmore控件,就有对页面的滑动的监听,需要做处理。
如果想要在后退后再进来刷新页面数据,则可以在beforeRouteEnter中进行刷新,或者拿到from页面的name后根据需要刷新。

beforeRouteEnter(to, from, next){
    next(vm => {
      console.log(from.name)
      vm.sss='234' //设置当前实例的属性。不能直接访问this
    })
  },

相关文章

网友评论

      本文标题:Vue项目近期遇到的几个小问题

      本文链接:https://www.haomeiwen.com/subject/bsdvkhtx.html