流星:ReactiveVar与ReactiveDict

时间:2015-11-03 23:20:02

标签: javascript meteor session-variables

据我所知,在基本级别使用ReactiveVar和Session变量之间的区别在于本地变量和全局变量。 ReactiveDict就像一个本地Session对象。

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

的任何优势

2 个答案:

答案 0 :(得分:8)

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

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

    推荐阅读:ReactiveDict source code

答案 1 :(得分:0)

" ...用于跟踪器的通用反应数据类型。"

"如果您为其构造函数提供名称,其内容将保存在Hot中 代码推送客户端代码更新。"

来源:https://atmospherejs.com/meteor/reactive-dict