路由传参this.$route.query和this.$route.params的使用与区别

路由传参this.$route.query和this.$route.params的使用与区别_第1张图片
使用params传参出现数据丢失的原因和解决方法
解决方式

本地储存的方法

created() {
// this.routerid = this. r o u t e . p a r a m s . p r o j e c t I d ; i f ( t h i s . route.params.projectId; if (this. route.params.projectId;if(this.route.params.projectId !== undefined) {
sessionStorage.setItem(“projectId”, this.$route.params.projectId);
}
}

submitApproval({
id: sessionStorage.getItem(“projectId”) //获取的方法

传对象或者方法的时候,即使在路由里配置,方法中的数据还是会丢失,解决方法如下:

router 里也设置了。传递的参数 如果是普通格式没问题,如果是对象,刷新后不管是params 还是 query 都会消失,我现在用JSON.stringify() 把对象变成字符串,然后再传递,没有问题。
用的使用 JSON.parse()解析

使用路由传对象数据:
父级:

 const aa = JSON.stringify(command.row)
      switch (command.command) {
        case "a": // 查看详情
          this.$router.push({
            path: `warehousingDetail?data=${aa}`
          });
          break;

目标对象:

let aa;
    try {
      aa = JSON.parse(this.$route.query.data);//这是查看详情的情况
    } catch (e) {
      aa = { datas: [], positionList: [], isAdd: true };//异常处理,当是新建的时候,没有这里,就会报错,因为还没有赋值。
    }
    console.log(aa);
    const { positionList, ...datas } = aa;
    this.tableData = positionList;
    // 是否是新增
    this.isAdd = !!aa.isAdd;//把这个传过来的字符串值转成boolen布尔值
    this.params = datas;

路由传参this.$route.query和this.$route.params的使用与区别_第2张图片

你可能感兴趣的:(vue.js)