Meteor:ReactiveVar vs ReactiveDict

mer*_*att 3 javascript session-variables meteor

我知道使用ReactiveVar和Session变量之间的区别在于,在基本级别,是本地变量和全局变量的问题.ReactiveDict就像一个本地Session对象.

但是,如果您已经在使用ReactiveVar,为什么要使用ReactiveDict?ReactiveDict似乎没有ReactiveVar的任何优势

Dav*_*don 8

以下是ReactiveDict(RD)和ReactiveVar(RV)之间的主要区别:

  1. 正如它的名字所暗示的,RD提供类似字典的语义:set需要一个键/值对,它有deleteclear方法.最重要的是,它允许您将反应数据集中到一个变量中.坦率地说,在大多数用例中,这并不是那么有趣,但请继续阅读.
  2. RD有一个all方法,它返回所有的键/值对,并在每个键/值对上注册一个被动依赖.主要好处是,如果您有一组相关的反应数据,您可以在字典的任何部分发生变化autorun时触发.要使用一组RV执行此操作,您需要调用每个RV .get
  3. 如果将名称传递给RD构造函数,它将在热代码推送中存活.事实上,Session实际上只是一个RD.

在实践中,我发现了RD的一些用例,但在大多数情况下你可能会选择RV.

推荐阅读:ReactiveDict 源代码