【bug】后端接口获取的对象,赋值后打印出来的值不对,已解决

经常会遇到一些小bug,多遇到几次就会熟悉是什么原因造成的了

当我从接口获取数据进行赋值的时候,从network里看接口返回的对象参数,和我赋值后自己定义的对象参数一比对,发现里面有些字段的值不对应,遇到这种情况,基本上都是因为我们拿到数据之后,又去其他地方进行了重新赋值

对象在内存里的地址都是同一个,所以后面的改动也会影响到前面赋值的地方

bug重现:一个表单类的页面,保存后会调获取详情的接口,当我赋值给自己定义的对象后,又把这个对象当作参数传到封装的子组件中,在子组件的watch中监听这个对象,做一些判断

写错的地方就在于监听里,将对象重新赋值了,正确的应该是给我需要的参数赋值对象里的值,我自己糊涂写反了

大概就是下面这样:
父页面,这里给form赋值之后,传到子组件中
在这里插入图片描述

父页面的子组件
在这里插入图片描述

子组件的prop
在这里插入图片描述

子组件的watch,bug引起的原因

 form: {
      handler(newVal) {
        if (this.id) {
            let code = this.deptOptions.find(v => newVal.deptCode == v.deptCode)
            if (!code) {
             this.form.deptCode = this.deptOptions[0].deptCode   //就是这里的三行写错了
              this.form.deptId  =  this.deptOptions[0].deptId  //form被重新赋值了
              this.form.deptName  =  this.deptOptions[0].deptName 

          }
        }
      },
      deep: true,
    },

子组件watch,正确写法

    form: {
      handler(newVal) {
        if (this.id) {
            let code = this.deptOptions.find(v => newVal.deptCode == v.deptCode)
            if (!code) {
         let obj ={
           deptCode: this.form.deptCode,
           deptId:this.form.deptId ,
           deptName:this.form.deptName ,
         }
         this.deptOptions.push(obj)
          }
        }
      },
      deep: true,
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后端接口只返回一半的数据时,可能有几个原因导致: 1. 数据量过大:后端接口返回的数据量可能超出了默认的限制。您可以检查接口的配置或文档,看是否有设置数据返回的最大限制。如果有,您可以尝试增加限制或者分页获取数据。 2. 请求超时:如果后端接口对请求设置了超时时间,并且处理请求的时间超过了该限制,可能会导致只返回部分数据。您可以尝试增加请求超时时间或者优化后端代码以提高处理效率。 3. 数据库查询问题:后端接口可能通过查询数据库来获取数据,如果查询条件不正确或者数据库出现问题,可能导致只返回部分数据。您可以检查后端代码中的数据库查询逻辑,确保查询条件正确,并且数据库连接正常。 4. 数据过滤或截断:后端接口可能对返回的数据进行了过滤或截断,只返回符合某些条件或长度限制的数据。您可以检查后端代码中对数据进行处理的逻辑,看是否有进行数据过滤或截断的地方。 5. 后端错误或bug后端代码可能存在错误或bug,导致只返回部分数据。您可以检查后端代码中涉及数据返回的部分,看是否有逻辑错误或者代码漏洞。 如果以上方法都无法解决问题,建议与后端开发团队或者接口提供方联系,提供详细的错误信息和复现步骤,以便他们帮助您进行排查和修复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值