有关快速重复点击按钮弹出错误,以及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。
谢谢解惑!
正在回答
同学你好, 老师测试了一下, 引入fastclick模块,然后快速点击按钮,确实会出现同学说的情况, 如下所示, 这个不是报错, 是警告信息, passive event listener 是chrome为了提高页面的滑动流畅度而新推出来的一个被动监听器,不影响现有代码的使用
如果想要解决这个问题, 可以在App.vue中通过设置CSS样式应用 CSS 属性 touch-action: none; 这样任何触摸事件都不会产生默认行为,但是 touch 事件照样触发。 示例:
因为是针对移动端300ms延迟的问题, 老师告诉同学有这个解决方案, 目前老师都是在pc端测试效果,所以就先注释了, 同学使用的时候是可以引入的哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
同学你好,
老师在源码中测试你的这种写法, 快速点击某一个选项的没有出现你说的这样错误,所以无法确定问题所在, 建议: 同学也可以在源码中测试你的这种写法, 是否也会出现这种情况呢
因为vue底层做了一些处理,给选项卡添加或删除router-link-active类名,来控制选项卡的样式。
_base.scss设置的active伪类表示链接点击时状态, 如果不设置route-link-active的样式, 在点击链接的时候也是可以生效的, 但不是我们想要的效果,我们需要点击后对应的选项链接字体颜色改变, 所以需要设置router-link-active样式。
如果还有疑惑, 可以再次提问, 我们会继续为你解答
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星