Vue关于使用JSON parse和Stringly解决数据双向流动的问题

本文探讨了在前端开发过程中,如何解决父子组件间的数据同步问题。具体地,介绍了通过使用JSON.stringify和JSON.parse实现数据的深拷贝,从而避免因直接引用导致的意外数据同步现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近,在完成公司项目某模块的时候,遇到这样一个授权需求。需要在B 页面内选中某一条数据,然后关闭B页面后,A页面上tables也会出现B页面内选中的信息。然后,当B页面重新打开后,B页面需要重新映射回选中的那些属性信息。

  在完成这个需求的时候,出现这样一个问题。

  在B页面选择想要授权的信息后,还未确认,A页面上也会同时生产授权信息。

  A页面为父组件,B页面为子组件。A页面是通过调用B页面的方法进行传值的。代码如下

    this.$ref.test.diliverData(this.rowS);

    diliverData 是B页面的方法。this.rowS是A页面tables的所有信息集合。

   B页面如此接收

   diliverData(val){

      this.checkedRow = val ;   

}

而这时候,如果我重新打开B页面,想要添加新的信息时,B页面点击后,A页面也会随之发生变化。

研究以后,发现这是由A页面所传递的this.rowS是一个对象,而B页面接收的也是一个对象,即深拷贝。这样的话,无论在B页面如何修改rows的值,A页面也会发生变化,因为修改的是同一个对象。

如何解决呢?

使用JSON 的Stringly和Prase进行封装和解析。

A页面:

this.$ref.test.diliverData(JSON.Stringly(this.rows));

B页面:

this.checkedRow = JSON.prase(val);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值