Vue路由跳转


路由跳转:

1.router-link(声明式,最简单的方法)

渲染效果相当于标签

//不带参数
//name和path都行,建议用name

//replace在routre-link标签中添加后,页面切换时不会留下历史记录,替换掉当前的 history 记录
login
//具有tag属性的会被渲染成相应的标签,渲染效果为
  • login
  • //以"/"开头从根路由开始,没有就从当前路由开始 //带参数
    //不配置path,第一次可请求,刷新页面id会消失 //配置path,id会保留 //取参:this.$route.params.id

    跳转的路径需要提前在router/index.js下引入

    import login from '@/login/Login.vue'
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'login',
          component: login
        }
      ]
    })

    2.router.push()(编程式)

    //字符串
    router.push("userid")
    
    //对象
    router.push({
    path:"/login"
    })
    
    //命名的路由
    router.push({
    name:"login",
    params:{userid:"DF21313"}
    })
    
    //带查询参数
    router.push({
    path:"/login",
    query:{location:"nj"}
    })
    //使用params传参只能使用name进行引入,需要提供路由的name或手写完整的带有参数的path
    let location="nj"
    router.push({name:"login",params:{ location }})  //有效
    router.push({path:`/login/${ location }`})          //有效
    router.push({path:"/login",params:{ location }}) //params不生效

    3.this.$router.push()(方法内调用)

    //1.不带参数
    this.$router.push("login")
    this.$router.push({
    userid:"12313"
    })
    
    //2.query传参
    this.$router.push({name:"login",query:{userid:"2131"}})
    this.$router.push({path:"/login",query:{userid:"2131"}})
    //html 取参 :$router.query.userid
    //script 取参:this.$router.query.userid
    
    //3.params传参
    this.$router.push({name:"login",params:{userid:"2131"}})//只能用name
    //路由配置时 path:"/login/:userid" 或者 path:"/login:userid"
    //不配置path,第一次请求可反应,刷新页面userid会消失
    //配置path,刷新页面userid会保留
    //html 取参 :$router.params.userid
    //script 取参:this.$router.params.userid

    query和params区别:

       query类似于get,传参时显示参数,params类似于post,传参时不显示参数,一般传重要性参数;

       query 传参配置的是path,而params传参配置的是name,在params中配置path无效;

       query在路由配置不需要设置参数,而params必须设置;

       取值方式不同;

       query刷新页面参数还在,params刷新页面参数消失;

    4.this.$router.replace()(同push用法一致)

    与this.$router.push()的区别:

    this.$router.push()跳转到指定URL,向history栈添加一个新的记录,点击后退会返回至上一个页面;

    this.$router.replace()跳转到指定URL,替换history栈中最后一个记录,点击后退会返回至上上一个页面 (A----->B----->C   结果B被C替换    A----->C)  

    5.this.$router.go(n)()

    向前或向后跳转n个页面,n可以为正数也可以为负数