个人技术分享

params方法传递参数优势:

1.不可见

2.不会造成地址栏不美观

传统写法:

router地址必须是name方法跳转,接收:route.params

 
import { useRouter } from "vue-router";
 
const router = useRouter();
// 提现记录
const withdrawalClick = (item) => {
  router.push({ name: "detail", params: { page: 123 } });
};
 
 
//跳转页面接收参数
import { useRoute } from "vue-router";
 
const route = useRoute();
console.log(route.params);

问题:vue3 由于刷新导致参数丢失,params传统使用方法去掉了  

router/packages/router/CHANGELOG.md at main · vuejs/router · GitHub

vu3推荐的路由跳转传参方法:

1.使用query传递参数

2.使用vuex、pinia对参数进行存储

3.使用 History API 方式传递和接收

 参考案例(history方法)

params需要使用state替代,如下:

//跳转之前页面
function onRowClick(e) {
  router.replace({path: `/orderDetails`, state: {detail: JSON.stringify(e)}},)
}

//跳转之后页面,接收在setup onActivated
onActivated(()=>{
  let detail = history.state.detail
  orderInfo.value = JSON.parse(detail || {})
})