Vue如何监控Object属性的变化?
发布于 1 个月前 作者 clubadmin 142 次浏览 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

最近在开发途中碰到一个场景,让我发现无论是computed,还是watch都失效了,与Object属性的变化相关。

首先分析一下Object可能存在的变化,我认为大致分为两种:
1.属性对应的value变化。 {a:‘a’} -> {a:‘b’}
2.属性的增删 {a:‘a’} -> {a:‘a’,b:‘b’}

对于第一种情况,解决方案是deep,网上有不少文章介绍,重点在于第二种的解决方案。最近的业务场景中我碰到一个需要会频繁增删属性的场景。当然项目已经结束了,功能也已经实现。因为属性的变化是由事件驱动的,最简单的方法就是在事件发生时插入一下函数做处理。

但是现在我在重构代码,目的不是实现功能,而是在想有没有更”优雅“的方式来达到目的。
(另一个主要原因是该对象会传入到多个component中,如果使用函数需要在多处维护处理代码,我觉得这样代码结构会很不好。)

求教求教。

3 回复

感谢,可行。是我太弱了…

而且如果频繁增删的数据类型大致相同的话 建议还是使用数组进行操作 有对应的push和shift变异方法 就不用手动去this.$set了

使用Vue.set()来增加属性,可以使监控生效吧

回到顶部