跳至内容

ReactiveVar

要使用 ReactiveVar,请通过在终端中运行以下命令将 reactive-var 包添加到您的项目中

bash
meteor add reactive-var

ReactiveVar

仅客户端

摘要

ReactiveVar 的构造函数,表示单个响应式变量。

参数

源代码
名称类型描述必需
initialValue任何

要设置的初始值。设置初始值时会忽略 equalsFunc

equalsFunc函数

可选。一个具有两个参数的函数,在每次设置 ReactiveVar 时都会在旧值和新值上调用。如果它返回 true,则不执行设置。如果省略,则默认的 equalsFunc 会在它的参数为 === 且类型为数字、布尔值、字符串、未定义或 null 时返回 true。

js
import { ReactiveVar } from "meteor/reactive-var"";

const reactiveVar = new ReactiveVar();
  any,
() => {}, // this param is optional
);

ReactiveVar 保存单个值,可以获取和设置,以便根据响应式数据源的常用约定,调用 set 会使调用 get 的任何计算失效。

ReactiveVar 类似于会话变量,但有一些区别

  • ReactiveVar 没有全局名称,例如 Session.get('foo') 中的“foo”。相反,它们可以在本地创建和使用,例如附加到模板实例,如:this.foo.get()

  • ReactiveVar 不会自动跨热代码推送迁移,而会话状态则会迁移。

  • ReactiveVar 可以保存任何值,而会话变量仅限于 JSON 或 EJSON。

ReactiveVar 的一个重要属性(有时是使用它的原因)是将值设置为与之前相同的值不会产生任何影响;它不会触发任何失效。因此,如果一个 autorun 设置了 ReactiveVar,而另一个 autorun 获取了 ReactiveVar,则第一个 autorun 的重新运行不一定能触发第二个 autorun。默认情况下,仅以这种方式比较原始值,而在调用 set 时,如果参数是对象(不是原始值),则始终被视为更改。您可以使用 equalsFunc 参数配置此行为。

reactiveVar.get

仅客户端

摘要

返回 ReactiveVar 的当前值,并建立响应式依赖关系。

js

// reactiveVar is an instance of ReactiveVar

const result = reactiveVar.get();

reactiveVar.set

仅客户端

摘要

设置 ReactiveVar 的当前值,如果 newValue 与旧值不同,则使调用 get 的计算失效。

参数

源代码
名称类型描述必需
newValue任何----
js

// reactiveVar is an instance of ReactiveVar

const result = reactiveVar.set();
  any
);