vue引用传递——赋值后,新变量数据改变,原变量的数据也随之改变了

现象

updateQuery的值发生变化时,this.updateForm的值也随之改变了。
本来需要的是this.updateForm的值始终不变,只有updateQuery的值在变化。
1   let updateQuery = this.updateForm
2   console.log(this.updateForm.status) // 1
3   updateQuery.status = 0
4   console.log(this.updateForm.status) // 0

 

原因

在vue中,数组和对象传递都是引用传递。赋值时传递的并不是值,而是指向了同一个空间。

解决

方法一

JSON.stringify   将一个 JavaScript 值(对象或者数组)转换为一个 JSON 字符串
JSON.parse   用来解析 JSON 字符串,将数据转换为 JavaScript(对象或者数组)
1     let updateQuery = JSON.parse(JSON.stringify(this.updateForm))

方法二

es6的扩展运算符(...)

对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

1     let updateQuery = { ...this.updateForm }

 

https://blog.csdn.net/peng_da818/article/details/123003337

 

posted @   silvia喵  阅读(1501)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示