javascript - 在Angular 2+中处理子组件中通过引用传递的对象
问题描述
我知道 TypeScript 通过引用传递对象,并且没有明确的最佳实践来绕过它来获得深层副本,但我发现很难使用它,尤其是在使用主题时。
我刚刚遇到了一个组件,它有一个对象数组并将它们传递给子组件。每个子组件都会更新作为输入传递的单个对象。问题:我不是编写它的人,所以我不知道子组件直接修改了值。即使我是,我很确定六个月后我也不会记得了。
是否有明确的最佳实践来处理这个问题?
解决方案
如果 lodash 在您的工具带中,您可以使用 _.cloneDeep()。我已经将它可靠地用于相对较大的对象和大型集合,没有任何问题。
https://lodash.com/docs/4.17.15#cloneDeep
var objects = [componentObj1, componentObj2];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
推荐阅读
- c# - 在统一 webgl 构建中发布 json 请求失败(但不是本地)
- node.js - 如何使用节点 js 通过 twilio 上的键盘收集用户输入
- python - 找到值最接近某个值的k个dict项
- java - Jms 应用程序无法刷新与 ibm mq 的连接
- c# - 已被强制转换为派生类型的多态对象是否具有相同的引用值
- java - 两个类对 JDBC Driver 的看法不同
- excel - Excel VBA - 如何发送包含特定单元格值特定文本的电子邮件?
- json - 如何通过集合
在.net mvc中从视图到控制器 - ios - UiPickerView 在模拟器中运行时移动到原点
- java - 替换与 arrayList 中的键匹配的字符串的多个部分