一、概述
在Vue.js中,router.replace()
方法用于修改路由,其会把当前路由替换为指定的路由,而不是添加一条新的路由。也就是说,历史记录中不会保存当前路由。
router.replace()
方法常用于一些登录或注销等需要重定向页面的场景,如登录之后跳转到首页;用户注销之后跳转到登录界面。
二、语法
该方法的语法如下:
// 对象模式
router.replace(location, onComplete?, onAbort?)
// 字符串模式
router.replace(path, onComplete?, onAbort?)
参数:
location
: 一个描述目标位置的对象,可以包含下列属性:path
: 字符串,对应要跳转到的路由路径query
: 对象,表示跳转时要携带的查询参数hash
: 字符串,表示跳转时要携带的 hash 值
path
: 字符串,对应要跳转到的路由路径。onComplete
: 可选的函数,在导航成功完成 (即在所有的异步钩子被解析之后) 时被调用。onAbort
: 可选的函数,在导航被终止时调用,例如在失去网络连接时。
三、用法示例
1. 对象模式的用法示例
下面的示例通过对象模式的形式使用router.replace()
方法,跳转到home页面,同时传递了一个查询参数(name:'Tom'
) 。
router.replace({ path: '/home', query: { name: 'Tom' } })
2. 字符串模式的用法示例
下面的示例通过字符串模式的形式使用router.replace()
方法,跳转到home页面,同时传递了一个查询参数(name:'Tom'
)。
router.replace('/home?name=Tom')
3. 处理导航失败的回调函数
可以在调用router.replace()
时传递一个可选的导航失败的回调函数:
router.replace('/home', () => {
// 成功跳转到home页面时会触发该回调函数
}, error => {
// 导航失败(如没有权限等)时会触发该回调函数
})
4. 完整的使用示例
下面是一个完整的router.replace()
方法的使用示例:
<template>
<div>
<button @click="replaceHome">点击跳转到home页</button>
</div>
</template>
<script>
export default {
methods: {
replaceHome() {
this.$router.replace({ path: '/home', query: { name: 'Tom' } }, () => {
// 成功跳转到home页面时会触发该回调函数
console.log('跳转成功')
}, error => {
// 导航失败(如没有权限等)时会触发该回调函数
console.log('跳转失败')
})
}
}
}
</script>
四、注意事项
router.replace()
方法不会将新的 URL 添加到浏览器历史记录中- 如果要保留之前的页面状态,建议使用
router.push()
方法 - 在单页应用中使用
router.replace()
方法时,页面不会重新加载,而是利用了 Vue.js 的组件复用机制
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/185558.html