当前位置: 首页 > 知识库问答 >
问题:

$set和维集有什么区别?

闾丘德宇
2023-03-14

我仔细阅读了Vue文档“深度反应性”和vm的API。$set和Vue.set但我仍然很难确定何时使用哪个。能够区分两者对我来说很重要,因为在我当前的Laravel项目中,我们动态地设置了对象的许多属性。

文档中的区别似乎在于vm使用的语言。$set是“用于Vue实例”,而Vue.set是“用于普通数据对象”,并且Vue.set是全局的:

但是,有一些方法可以添加属性,并在创建实例后使其具有反应性。

对于Vue实例,可以使用$set(path,value)实例方法:

vm.$set('b', 2)
// `vm.b` and `data.b` are now reactive

对于普通数据对象,可以使用全局Vue。设置(对象、键、值)方法:

Vue.set(data, 'c', 3)
// `vm.c` and `data.c` are now reactive

最后,我想知道执行上述操作的第3个“选项”(即一次添加多个属性)是否可以用作上述2个选项中的任何一个的等效替代品(通过仅添加1个属性而不是多个)?

有时,您可能希望为现有对象分配一些属性,例如使用Object.assign()或_扩展()。但是,添加到对象中的新属性不会触发更改。在这种情况下,使用原始对象和混音对象的属性创建一个新对象:

// instead of `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

共有3个答案

徐欣德
2023-03-14

发现使用向对象添加多个属性。$set()只有在运行良好时,也许Vue首先将这些添加的属性收集到一个序列中,然后将这些序列应用于getter和setter;例如。

Vue.set(this.b,'first','first');
this.b.second = 'second';
this.b.third = 'third';
this.b.fourth = 'fourth';

“第二”、“第三”、“第四”是作为“第一”的反应

仲孙经赋
2023-03-14

简单来说,两者都是相同的,$set在组件(实例)中可用,如this.$set(),其中Vue.set是全局可用的静态方法。

this.$set(someobject, 'key', 'value')

Vue.set(someobject, 'key', 'value')
弘康安
2023-03-14

以下是Vue.set的发布说明:

Vue不再用$set和$delete方法扩展Object.prototype。这导致在某些条件检查中依赖这些属性的库出现问题(例如Meteor中的minimongo)。而不是对象。$set(键,值)和对象。$delete(key),使用新的全局方法Vue.set(object,key,value)和Vue.delete(object,key)。

因此,.$set以前在所有对象上都可用 - 现在它仅在视图模型本身上可用。因此,Vue.set 现在用于那些情况下,当你有一个对一个反应式对象的引用,但没有一个引用它所属的视图模型。

 类似资料:
  • 本文向大家介绍Set和WeakSet有什么区别?相关面试题,主要包含被问及Set和WeakSet有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 Set 有 forEach keys values 等方法,类数组结构,可以 add 进各种类型,可以用 keys 和 for-in 取出; WeakSet 没有那些方法,只能 add 进对象,没法取出,只能 has 判断。 将它们视为始终去重的数

  • 问题内容: 看到这样的代码片段 我想知道Hashset是否是一种特殊的设置。他们之间有什么区别吗? 问题答案: A 代表通用的“一组值”。A 是对元素进行排序(并由此排序)的集合,a 是对元素进行 不 排序或排序的集合。 A 通常比A 快很多。 通常将A 实现为一棵红黑树(请参阅http://en.wikipedia.org/wiki/Red- black_tree- 我尚未验证sun / ora

  • 问题内容: 和接口之间的根本区别是什么? 问题答案: 是元素的有序序列,而元素是无序的独特列表。 有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 一个不包含重复元素的集合。更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)最多包含一个空元素。顾名思义,此接口对数学集合抽象进行建模。

  • 在一个android、kotlin项目中,看到这个< code>@set:Inject,但找不到一个好的解释。有人知道吗?

  • 问题内容: 两者都意味着空间,但是有什么区别吗? 问题答案: 一个是不间断空间,另一个是常规空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。 此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。

  • 本文向大家介绍<%# %> 和 <% %> 有什么区别?相关面试题,主要包含被问及<%# %> 和 <% %> 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 答:<%# %>表示绑定的数据源 <%%>是服务器端代码块