简体   繁体   中英

Meteor: ReactiveVar vs ReactiveDict

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

Here are the main differences between ReactiveDict (RD) and ReactiveVar (RV):

  1. As its name implies, RD offers dictionary-like semantics: set takes a key/value pair and it has delete and clear 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.
  2. 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 an autorun whenever any part of the dictionary changes. To do this with a set of RVs, you'd need to call get on each of them.
  3. 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

"... 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM