流星:ReactiveVar 与 ReactiveDict
Meteor: ReactiveVar vs ReactiveDict
我知道使用 ReactiveVar 和 Session 变量之间的区别在基本层面上是局部变量与全局变量的问题。 ReactiveDict 就像一个本地 Session 对象。
但是,如果您已经在使用 ReactiveVar,为什么还要使用 ReactiveDict? ReactiveDict 似乎没有比 ReactiveVar
有任何优势
“...与跟踪器一起使用的通用反应数据类型。”
"如果您为其构造函数提供名称,其内容将保存在 Hot 中
代码推送客户端代码更新。"
以下是 ReactiveDict
(RD) 和 ReactiveVar
(RV) 之间的主要区别:
- 顾名思义,RD 提供类似字典的语义:
set
采用 key/value 对,它具有 delete
和 clear
方法。最重要的是,它可以让您将反应性数据聚集到一个变量中。坦率地说,这在大多数用例中并不是那么有趣,但请继续阅读。
- RD 有一个
all
方法,该方法 returns 所有 key/value 对并注册对它们每个的反应依赖。主要好处是,如果你有一组相关的反应数据,你可以在字典的 any 部分发生变化时触发 autorun
。要对一组 RV 执行此操作,您需要对每个 RV 调用 get
。
- 如果将名称传递给 RD 构造函数,它将在热代码推送中幸存下来。事实上,Session实际上只是一个RD。
在实践中,我发现了一些 RD 的用例,但在大多数情况下您可能会选择 RV。
推荐阅读:ReactiveDict
source code
我知道使用 ReactiveVar 和 Session 变量之间的区别在基本层面上是局部变量与全局变量的问题。 ReactiveDict 就像一个本地 Session 对象。
但是,如果您已经在使用 ReactiveVar,为什么还要使用 ReactiveDict? ReactiveDict 似乎没有比 ReactiveVar
有任何优势“...与跟踪器一起使用的通用反应数据类型。”
"如果您为其构造函数提供名称,其内容将保存在 Hot 中 代码推送客户端代码更新。"
以下是 ReactiveDict
(RD) 和 ReactiveVar
(RV) 之间的主要区别:
- 顾名思义,RD 提供类似字典的语义:
set
采用 key/value 对,它具有delete
和clear
方法。最重要的是,它可以让您将反应性数据聚集到一个变量中。坦率地说,这在大多数用例中并不是那么有趣,但请继续阅读。 - RD 有一个
all
方法,该方法 returns 所有 key/value 对并注册对它们每个的反应依赖。主要好处是,如果你有一组相关的反应数据,你可以在字典的 any 部分发生变化时触发autorun
。要对一组 RV 执行此操作,您需要对每个 RV 调用get
。 - 如果将名称传递给 RD 构造函数,它将在热代码推送中幸存下来。事实上,Session实际上只是一个RD。
在实践中,我发现了一些 RD 的用例,但在大多数情况下您可能会选择 RV。
推荐阅读:ReactiveDict
source code