vue路由刷新参数消失,vue router刷新当前页面

  vue路由刷新参数消失,vue router刷新当前页面

  本文主要介绍如何处理vue路由器路由参数刷新页面的参数丢失问题。对vue感兴趣的同学可以参考一下。

  

目录

  概述方法一:通过params传递参数方法二:通过查询传递参数方法三:使用props配合组件路由解耦

  

概述

  常见场景:点击列表的明细,跳转到明细内页,根据传递的参数可以得到明细数据。

  通常,有几种方法可以传递路由参数。以下是可编程导航router.push参数传递的主要方式:

  

方法一:通过 params 传参

  该路由配置如下:

  {

  路径:/detail/:id ,//如果添加?指示此参数是可选的。

  名称:详细信息,

  组件:详细信息

  }

  通过$router.push中的path携带参数的方式

  //传递列表中的参数

  goDetail(世界其他地区){

  这个。$router.push({

  路径:`/detail/${row.id} `

  })

  }

  //获取参数的详细信息页面

  这个。$route.params.id

  通过router.push的params传递参数

  //列表页传递参数。

  goDetail(世界其他地区){

  这个。$router.push({

  名称:详细信息,

  参数:{

  id: row.id

  }

  })

  }

  //获取详细信息页面

  这个。$route.params.id

  注意:这样就不能用名称、名称、路径来获取参数了。如果路由配置中没有添加/:id,path: detail ,则该id不会显示在url中,在details页面中仍然可以获取参数id,但刷新后参数丢失。

  以上两种方式,传递过来的参数id都会显示在url后面,如图:

  传递的参数将在URL中公开。

  如果在route中设置了params parameter /:id,但在跳转过程中没有传递该参数,则会导致页面没有内容或者跳转失败。可以补充?最后。表示这个参数是可选的,即/:id?

  

方法二:通过 query 传参

  //路由配置

  {

  路径:“/detail”,

  名称:详细信息,

  组件:详细信息

  }

  //列表页面

  goDetail(世界其他地区){

  这个。$router.push({

  路径:“/detail”,

  查询:{

  id: row.id

  }

  })

  }

  //详细信息页面

  这个。$route.query.id

  注意:这样传递的参数会显示在地址栏的url后面?id=?类似于get传递参数;查询必须与路径协作来传递参数。

  传递的参数是对象或数组。

  另一种情况,如果查询传递一个对象或数组,会被强制到地址栏的[object Object],刷新后得不到对象值。

  此时,要传递的参数可以通过JSON.stringify()方法转换成字符串,然后在详情页通过JSON.parse()转换成对象。

  let parObj=JSON.stringify(obj)

  这个。$router.push({

  路径:“/detail”,

  查询:{

  对象:parObj

  }

  })

  //详细信息页面

  JSON.parse(这个。$route.query.obj)

  这种方法虽然可以传递对象,但是如果数据少,数据多的话地址栏会很长。

  注意:在所有子组件中获得的路由参数是$route,而不是$router。

  上述参数和查询参数传递方法的比较:

  通过$ router.push的params name传递参数,如果路由中没有设置params参数,则该参数不会拼接到路由后面,但是页面刷新参数会丢失。

  参数在$router.push中由path携带或者由query传递,参数会拼接在地址后面,这样会暴露信息。

  

方法三:使用 props 配合组件路由解耦

  //路由配置

  {

  路径:“/detail/:id”,

  名称:详细信息,

  组件:细节,

  Props: true //如果Props设置为true,$route.params将被设置为组件属性

  }

  //列表页面

  goDetail(世界其他地区){

  这个。$router.push({

  路径:“/detail”,

  查询:{

  id: row.id

  }

  })

  }

  //详细信息页面

  导出默认值{

  道具:{

  //将路由中传递的参数id解耦到组件的props属性

  id:字符串

  },

  已安装:{

  console.log(this.id)

  }

  }

  此外,还可以将参数保存在sessionStorage或localStorage中,解决页面刷新参数丢失的问题,可以结合实际项目。

  以上就是vue路由器路由参数刷新页面如何处理参数丢失的细节。更多关于vue的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: