Vue-Router 第六节:历史记录

655 阅读1分钟

Vue-Router 第六节:历史记录

1、router.replace() 替换当前位置

我们除了使用 <router-link> ,router.push进行页面的跳转,我们还可以使用编程式的: router.replace(...)

它与router.push的区别在于它在导航时不会向 history 添加新记录,也就是取代了当前页。

router.push({ path: '/home', replace: true })
// 相当于
router.replace({ path: '/home' })
​
​
<router-link :to="..." replace> 
// 相当于
router.replace(...)
​
// App.vue
<template>  
    <div>      
        <button @click="toPages">通过替换位置replace进入user路由页面</button>  
    </div>
</template><script setup lang="ts">  
    import { useRouter } from 'vue-router'; 
    const router = useRouter()  
    const toPages = () => {  
       router.replace({path:'user'})   
</script>
   // router/index.vue 页面
   
   {
        path: '/user/:id?',
        name: 'user',
        component: import("@/views/user/index.vue")
    }

1712558076635.jpg

1712558120528.jpg

2、router.go() 横跨历史

该方法采用一个整数作为参数,表示在历史堆栈中前进或后退多少步。

// 向前移动一条记录,与 router.forward() 相同
router.go(1)
​
// 返回一条记录,与 router.back() 相同
router.go(-1)
​
// 前进 3 条记录
router.go(3)
​
// 如果没有那么多记录,静默失败
router.go(-100)
router.go(100)
      // router/index.vue 页面
   
   {
        path: '/user',
        name: 'user',
        component: import("@/views/user/index.vue")
    },
    {
        path: '/userOne',
        name: 'userOne',
        component: import("@/views/user/userOne.vue")
    },
    {
        path: '/userTwo',
        name: 'userTwo',
        component: import("@/views/user/userTwo.vue")
    }
    // App.vue
​
<template>  
    <div>   
    <button @click="toPages">进入user路由页面</button>  
    <button @click="toPagesOne">进入userOne路由页面</button>  
    <button @click="toPagesTwo">进入userTwo路由页面</button>  
    <br>
    <button style="background-color: cadetblue;" @click="toGo">前进一个</button>  
    <button style="background-color: cadetblue;" @click="toBack">后退一个</button>  
  </div>
</template><script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter()
​
const toPages = () => {
  router.push({path:'user'})
}
​
const toPagesOne = () => {
  router.push({path:'userOne'})
}
​
const toPagesTwo = () => {
  router.push({path:'userTwo'})
}
​
const toGo = () => {
  router.go(1)
   // router.forward()
}
​
const toBack = () => {
  router.go(-1) 
  //  router.back()
}
​

1712561128702.jpg