问题
I understand that the difference between using ReactiveVar and Session variables is, at the basic level, a matter of local vs global variables. ReactiveDict is like a local Session object.
But why use ReactiveDict at all if you're already using ReactiveVar? ReactiveDict doesn't seem to have any advantages over ReactiveVar
回答1:
Here are the main differences between ReactiveDict
(RD) and ReactiveVar
(RV):
- As its name implies, RD offers dictionary-like semantics:
set
takes a key/value pair and it hasdelete
andclear
methods. The bottom line is it lets you cluster reactive data into a single variable. Frankly, this isn't all that interesting in most use cases, but keep reading. - RD has an
all
method which returns all of the key/value pairs and registers a reactive dependency on each of them. The main benefit is that if you have a cluster of related reactive data you can fire anautorun
whenever any part of the dictionary changes. To do this with a set of RVs, you'd need to callget
on each of them. - If you pass a name into the RD constructor, it will survive a hot code push. In fact, Session is actually just an RD.
In practice, I've found a few use cases for RDs, but RVs are what you'll likely choose in most situations.
Recommended reading: the ReactiveDict
source code
回答2:
"... a general-purpose reactive datatype for use with tracker."
"If you provide a name to its constructor, its contents will be saved across Hot Code Push client code updates."
source: https://atmospherejs.com/meteor/reactive-dict
来源:https://stackoverflow.com/questions/33510951/meteor-reactivevar-vs-reactivedict