在Meteor模板的onCreated
函数中,可以有多个autoruns:
Template.componentA.onCreated(function() {
this.autorun(() => {
const varX = Session.get('varX');
// block X
});
this.autorun(() => {
const varY = Session.get('varY');
// block Y
});
});
具体而言,他们是否会分别处理反应依赖性?
(所以每次会话变量'varX'改变时我都不会重新运行块Y,并且每次会话变量'varY'改变时我都不会重新运行块X)
答案 0 :(得分:1)
Meteor会将各种autoruns中声明的内容放在同一个函数中,所以如果将它们分开则没有区别。 要实现分离的反应性,请考虑创建两个不同的组件。
答案 1 :(得分:1)
每个声明的自动运行功能都会查找被动数据源更改以触发自身(meteor doc)。所以你可以清楚地使用不同的autoruns。
这是测试它的演示代码。
this.autorun(function () {
// a call to Session.set("test",1) will trigger the autorun
var test = Session.get("test");
console.log("autorun test");
});
this.autorun(function () {
// a call to Session.set("test2",2) will trigger the autorun
var test = Session.get("test2");
console.log("autorun test2");
});
然后你可以在控制台中测试,这是输出:
Session.set("test",1)
>undefined
>landing.js:148 autorun test
Session.set("test2",1)
>undefined
>landing.js:153 autorun test2
要处理不应触发自动运行的数据源,请使用Tracker.nonreactive