我有一个没有任何代码的问题。我在某处读到视图仅在某些变量更改其引用时才会更新。但是它如何处理数组呢?当我编辑一个数组时,有时视图会更新,有时不会。有没有办法在数组更改后刷新视图?现在我使用:
data =JSON.parse(JSON.stringify(data))
Run Code Online (Sandbox Code Playgroud)
获取数据数组的新引用。这样对吗?有没有更好的方法来做到这一点?
在 Angular 中,您需要了解变更检测的工作原理,因为它会影响您对待对象和组件的方式。有几篇关于它的好文章。Maximus提到了一个,你可以看看这个博客:https : //blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html
对于数组,很难检测到内部更改,因此如果修改其内容,则应制作数组的浅表副本。浅拷贝意味着数组的内容保持不变(内存中的对象相同),但数组对象是新的。有几种方法可以做到:
const shallowCopy1 = [...originalArray];
const shallowCopy2 = originalArray.slice(0);
Run Code Online (Sandbox Code Playgroud)
JSON stringify+parse 创建数组及其内容(内存中的新对象)的深层副本,这在您的情况下是不必要的。
还有一个概念是让您整个应用程序模型不可变(您在创建后不要修改它 - 在需要修改时创建一个新副本)。检查这篇文章或ngrx项目。如果您需要构建更复杂的应用程序,这对您来说可能会很有趣。
| 归档时间: |
|
| 查看次数: |
11804 次 |
| 最近记录: |