有关快速重复点击按钮弹出错误,以及router-link-active样式的问题

有关快速重复点击按钮弹出错误,以及router-link-active样式的问题

1. 实现tabbar组件时,我使用v-for标签来实现4个router-link,代码如下

    <router-link v-for='item in footerItems' class='g-tabbar-item' :to="'/'+item.icon" :key='item.icon'>
      <i :class="'iconfont icon-'+item.icon"></i>
      <span>{{item.name}}</span>
    </router-link>

在浏览器中点击时,确实第一次点击会变成红色,但是快速重复点击某一个按钮时,会出现如下错误:

Unable to preventDefault inside passive event listener due to target being treated as passive.

如果有相关资料文档,请老师提供一下以解惑。


2.既然vue将router-link渲染为一个a标签,那么在_base.scss文件中已经写了

a {
  color: #686868;
  text-decoration: none;

  &:active {
    color: $link-active-color;
  }
}

那么所有a标签active时的颜色都会是$link-active-color,为什么还要在组件内部定义.router-link-active。

谢谢解惑!

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好, 老师测试了一下, 引入fastclick模块,然后快速点击按钮,确实会出现同学说的情况, 如下所示, 这个不是报错, 是警告信息, passive event listener 是chrome为了提高页面的滑动流畅度而新推出来的一个被动监听器,不影响现有代码的使用

http://img1.sycdn.imooc.com//climg/5d4a27cf0001397c10980069.jpg

如果想要解决这个问题, 可以在App.vue中通过设置CSS样式应用 CSS 属性 touch-action: none; 这样任何触摸事件都不会产生默认行为,但是 touch 事件照样触发。 示例:

http://img1.sycdn.imooc.com//climg/5d4a29010001efed05440467.jpg

因为是针对移动端300ms延迟的问题, 老师告诉同学有这个解决方案, 目前老师都是在pc端测试效果,所以就先注释了, 同学使用的时候是可以引入的哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

好帮手慕慕子 2019-08-06 18:40:27

同学你好, 

  1. 老师在源码中测试你的这种写法, 快速点击某一个选项的没有出现你说的这样错误,所以无法确定问题所在, 建议: 同学也可以在源码中测试你的这种写法, 是否也会出现这种情况呢

  2. 因为vue底层做了一些处理,给选项卡添加或删除router-link-active类名,来控制选项卡的样式。

    _base.scss设置的active伪类表示链接点击时状态, 如果不设置route-link-active的样式, 在点击链接的时候也是可以生效的, 但不是我们想要的效果,我们需要点击后对应的选项链接字体颜色改变, 所以需要设置router-link-active样式。

如果还有疑惑, 可以再次提问, 我们会继续为你解答

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~

  • 提问者 慕标1463484 #1
    第一个问题我找到答案了,是因为当时引入fastclick模块时,视频中引入之后又注释掉了,我这边没注释,把main.js文件中的fastclick注释掉之后就不会有错误了。这里刚好问一下,不是说要解决移动端300ms的延迟问题,为什么引入之后又注释了呢
    2019-08-06 19:28:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师