【better-scroll】执行路由跳转时报错:Avoided redundant navigation to current location: “/“

news/2024/7/10 1:20:29 标签: vue, better-scroll

一、报错

二、报错原因

重复路由跳转。因为点击事件执行了两次,造成了路由重复跳转。

<template>
<div>
  <div class="search">
    <input type="text" v-model="keyword" placeholder="请输入城市名或拼音" class="search-input">
  </div>
  <div class="search-content" ref="search" v-show="keyword">
    <ul>
      <li class="search-item border-bottom" v-for="item of list" :key="item.id" @click="changeCity(item.name)">{{item.name}}</li>
      <li class="search-item border-bottom" v-show="noData">未找到匹配数据</li>
    </ul>
  </div>
  </div>
</template>

三、解决方案

1、网上转烂的一种,有效

const originalPush = Router.prototype.push
Router.prototype.push = function push (location) {
  return originalPush.call(this, location).catch(err => err)
}

修改文件:router/index.js

点击事件还是执行了两次,只是上边的代码将错误信息进行了捕获,不报错了而已。

2、升级vue-router版本(亲测无效)

3、@click="changeCity(item.name) 写成 @click.native="changeCity(item.name)

报错:v-on的.native修饰符仅对组件有效,但是你在<li>上使用了它

4、 @click="changeCity(item.name) 写成 @click.stop="changeCity(item.name) (亲测无效)

5、 @click="changeCity(item.name) 写成 @click.once="changeCity(item.name) 有效

注意:虽然路由地址不会重复点击,但是该链接只能点击一次,点击后再点击不会响应。

6、通过 setTimeout 有效、推荐

export default {
  data () {
    return {
      time: null
    }
  },
  methods: {
    changeCity (city) {
      if (this.timer) {
        clearTimeout(this.timer)
      }
      this.time = setTimeout(() => {
        console.log(city)
        this.$store.dispatch('changeCites', city)
        this.$router.push('/')
      }, 24)
    }
  }
}

第六种方法是最近学到的可以提升性能的一种方式,常用语 touch、click 操作频繁时。

以上。

 


http://www.niftyadmin.cn/n/497613.html

相关文章

fat jar给android 打包,Eclipse將引用了第三方jar包的Java,Android項目打包成jar文件的兩種方法(Fat Jar)...

本人采用的是第二種方案(不為什么&#xff0c;就方便)方案一&#xff1a;用Eclipse自帶的Export功能步驟1&#xff1a;准備主清單文件 “MANIFEST.MF”&#xff0c;由於是打包引用了第三方jar包的Java項目&#xff0c;故需要自定義配置文件MANIFEST.MF&#xff0c;在該項目下建…

【better-scroll】使用better-scroll,容器内点击事件不起作用

文档地址&#xff1a;https://better-scroll.github.io/docs/en-US/ 一、不可点击的原因 二、解决方案 在定义组件时&#xff0c;加上 click:true. this.scroll new BScroll(this.$refs.search, {click: true})

华为鸿蒙os官网新机发布,5月19日发布,华为官宣新机,预装鸿蒙OS系统

提到华为手机&#xff0c;大家脑海里浮现出的第一感觉就是高端、大气、上档次&#xff0c;华为mate也是深受国内高端用户热爱&#xff0c;尤其是近两年推出的折叠屏旗舰机&#xff0c;定价万元也是供不应求&#xff0c;华为mate系列的受众人群还是具备一定的消费能力的&#xf…

【vscode】提高效率的几个vscode快捷键

1、整块代码左移 shiftTab键 2、整行删除 ctrlshiftk / mac版 commandshiftk 3、向上/向下复制行&#xff08;复制当前行并粘贴到上、下行&#xff09; altshift↑ / ↓ / mac版 optionshift↑ / ↓ 4、所有打开文件列表 ctrlp / mac版 commandp

listview android:layout_weight,Android 对Layout_weight属性完全解析以及使用ListView来实现表格...

http://blog.csdn.net/xiaanming/article/details/13630837今天主要说的是对Layout_weight属性的完全解析&#xff0c;以及利用Layout_weight这个属性使用ListView来实现表格的效果&#xff0c;我们都知道Android里面专门有一个TableLayout来实现表格的&#xff0c;说实话&…

【数据结构与算法】数据结构与算法的基本概念

一、概念 1、广义来讲&#xff1a;数据结构就是指一组数据的存储结构&#xff0c;算法就是操作数据的一组方法。 2、狭义来讲&#xff1a;就是具体的如&#xff1a;队列、栈、堆、二分查找、动态规划等 二、学习重点 1、复杂度分析&#xff1a;数据结构和算法解决的是如何更…

华为手机可以改成鸿蒙系统吗,如果把你的华为手机从安卓换成鸿蒙系统,你会接受吗?...

那么&#xff0c;我们就来讨论一番&#xff0c;如果在这个时候&#xff0c;把你的华为手机从安卓换成鸿蒙系统&#xff0c;你会接受吗&#xff1f;首先简单回顾下鸿蒙系统&#xff0c;这是一款基于微内核的分布式操作系统&#xff0c;主要还是应用在互联网领域&#xff0c;据说…

【Vue】生命周期函数在什么时候会被调用

生命周期函数&#xff1a;就是 Vue实例在某一个时间点自动执行的函数。 1、activated函数 被 keep-alive 缓存的组件激活时调用。该钩子在服务器端渲染期间不被调用。 应用实例&#xff1a;提高效率&#xff0c;避免接口的重复调用&#xff0c;可以将组件包裹在<keep-ali…