javascript - 对象属性在vue中变空白
问题描述
我正在尝试在 Vue 组件中实现过滤器方法。
我有以下过滤方法:
filterHotels:function(){
var thisHotels = this.hotelRoomArr;
console.log(this.hotelRoomArr['107572']['rooms'])
//this outputs:
{__ob__: Observer}
3: (...)
__ob__: Observer {value: {…}, dep: Dep, vmCount: 0}
get 3: ƒ reactiveGetter()
set 3: ƒ reactiveSetter(newVal)
__proto__: Object
thisHotels['107572']['rooms'] = {};
console.log(this.hotelRoomArr['107572']['rooms']);
//this outputs:
{__ob__: Observer}
__ob__: Observer {value: {…}, dep: Dep, vmCount: 0}
__proto__: Object
}
如上面的代码所示:
虽然我将thisHotels的rooms属性设置为空白对象,但 this.hotelRoomArr的rooms属性也发生了变化。
this.hotelRoomArr的逻辑房间属性不应更改。
我必须做什么才能使this.hotelRoomArr不会改变?
解决方案
当你这样做时var thisHotels = this.hotelRoomArr;
,thisHotels
成为参考。
尝试使用该lodash
功能cloneDeep
:
https://lodash.com/docs/4.17.15#cloneDeep
import cloneDeep from 'lodash/cloneDeep';
...
var thisHotels = cloneDeep(this.hotelRoomArr);
这将改为制作副本并防止this.hotelRoomArr
受到更改的影响
推荐阅读
- python - 如何使用 data-wipe-name 抓取 h2 标签?
- scala - Spark-Scala:当列表长度不同时,将列表的第一个元素与列表的每个其他元素映射
- antlr4 - 添加选项时出现意外的解析器行为(符号:'1' | '2';)
- internal-server-error - 我在 netbeans 中运行 servlet 时遇到问题(我使用的是 netbeans 12.3,服务器是 glassfish)
- docker - 使用 docker compose 让服务相互通信
- tensorflow - NASNetMobile 上的 TensorFlow-Lite 性能测量
- typescript - Flutter 中的 Solana 钱包
- javascript - Tailwind CSS:在tailwind.config.js 中引用自定义颜色
- javascript - 自动收据打印生成器反应 js 和 nodejs
- php - 使用自定义标签 PHP regex 包装 Latex Equation