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