【发布时间】:2020-05-17 22:46:05
【问题描述】:
这听起来可能微不足道,但事实并非如此。总结一下:
- 我们有一个对象数组(最初为空)存储在数据中。
- 创建组件时,我们通过自定义fabric方法将一些对象添加到数组中。
- Fabric 方法接受基础对象并使用一些额外的道具对其进行扩展。
- fabric方法添加的props之一是对数据的引用(
this.foo)。
问题:生成的对象没有反应性,并且对this.foo 更改没有反应。
演示:https://codesandbox.io/s/vigilant-framework-47me6?fontsize=14&hidenavigation=1&theme=dark
到目前为止我所尝试的:
- 使用 hack 返回新的
Vue(...)以使对象具有响应性 (https://github.com/vuejs/vue/issues/2660)。 - 使用
$set在fabric 方法中设置其他属性。
所以问题是:我们如何让对象反应?
附:我知道使用观察者/计算是选项,但在这种情况下不是。我希望对象具有反应性,而不是手动更新整个对象数组。
【问题讨论】:
-
您可以尝试用具有所有必要道具的新对象替换数组中的对象。这样,对象就变成了反应对象。对象中的所有道具必须在此对象位于数据部分本身或数组中之前存在。或者你应该为你添加的所有新道具使用 $set。
标签: javascript vue.js vuejs2 reactive-programming vue-reactivity