mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
{{#template name="apiReactiveVar"}}
|
|
|
|
|
|
<h2 id="reactivevar_pkg"><span>ReactiveVar</span></h2>
|
|
|
|
To use `ReactiveVar`, add the `reactive-var` package to your project with
|
|
`$ meteor add reactive-var`.
|
|
|
|
{{> autoApiBox "ReactiveVar"}}
|
|
|
|
A ReactiveVar holds a single value that can be get and set, such that calling
|
|
`set` will invalidate any Computations that called `get`, according to the
|
|
usual contract for reactive data sources.
|
|
|
|
A ReactiveVar is similar to a Session variable, with a few differences:
|
|
|
|
* ReactiveVars don't have global names, like the "foo" in `Session.get("foo")`.
|
|
Instead, they may be created and used locally, for example attached to a
|
|
template instance, as in: `this.foo.get()`.
|
|
|
|
* ReactiveVars are not automatically migrated across hot code pushes,
|
|
whereas Session state is.
|
|
|
|
* ReactiveVars can hold any value, while Session variables are limited to
|
|
JSON or EJSON.
|
|
|
|
An important property of ReactiveVars — which is sometimes a
|
|
reason for using one — is that setting the value to the same
|
|
value as before has no effect; it does not trigger any invalidations.
|
|
So if one autorun sets a ReactiveVar, and another autorun gets the
|
|
ReactiveVar, a re-run of the first autorun won't necessarily trigger
|
|
the second. By default, only primitive values are compared this way,
|
|
while calling `set` on an argument that is an *object* (not a
|
|
primitive) always counts as a change. You can configure this behavior
|
|
using the `equalsFunc` argument.
|
|
|
|
{{> autoApiBox "ReactiveVar#get"}}
|
|
|
|
{{> autoApiBox "ReactiveVar#set"}}
|
|
|
|
{{/template}} |