重写router.resolve
时间: 2024-02-18 15:56:07 浏览: 93
重写router.resolve是指在Vue Router中重新定义resolve方法,使其返回路由地址的标准化版本。这个方法可以用来解决一些路由跳转的问题,例如在新窗口中打开一个路由链接。在引用中的代码中,重写了router.push方法,使其在打开链接时可以选择在当前窗口打开或在新窗口打开。这个方法可以提高用户体验,使得用户可以更加方便地浏览网站。
相关问题
vue-router.esm.js:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: "/search/hw".
错误信息 "vue-router.esm.js:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: "/search/hw"" 表明在点击同一个跳转路由时,出现了重复导航的错误。这个错误可以通过重写 `push` 和 `replace` 方法来解决。在目录router的index.js中重写这两个方法,可以处理异常并避免重复导航的错误。
代码示例:
```javascript
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
VueRouter.prototype.push = function(location, resolve, reject) {
if (resolve && reject) {
originPush.call(this, location, resolve, reject);
} else {
originPush.call(this, location, () => {}, () => {});
}
}
VueRouter.prototype.replace = function(location, resolve, reject) {
if (resolve && reject) {
originReplace.call(this, location, resolve, reject);
} else {
originReplace.call(this, location, () => {}, () => {});
}
}
```
这样重写之后,再点击同一个跳转路由时就不会再出现重复导航的错误了。
vuerouter push方法
VueRouter的push方法用于导航到一个新的路由。在使用this.$router.push()方法时,方法内部代码执行的上下文为VueRouter的一个实例。通过重写push方法,我们可以自定义成功和失败的回调函数。比如可以指定resolve和reject参数来传入自定义的回调函数。如果没有指定成功和失败的回调函数,将自动为我们生成一个空函数来避免报错。具体的重写push方法的代码可以参考引用中的示例。引用给出了一个使用push方法的示例,通过传入一个对象来指定要导航的路由的名称、参数和查询参数。<span class="em">1</span><span class="em">2</span>
#### 引用[.reference_title]
- *1* *2* [重写VueRouter的push/replace方法](https://blog.csdn.net/superfeng88/article/details/126038929)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文