在我的Meteor模板中,ohlcInit()当Mongo中有新数据时,我有一个名为autorun 的函数:
Template.Live.rendered = function(){
function ohlcInit() {
// computations run here
}
Tracker.autorun(function() {
ohlcInit();
});
};
Run Code Online (Sandbox Code Playgroud)
当用户在页面/模板上进行定义时,这非常有用,但只要用户导航到站点上的另一个URL并且模板被销毁,就会在控制台中抛出错误:
Tracker重新计算函数的异常:undefined不是函数TypeError:undefined不是函数在ohlcInit(http:// localhost:3000/client/views/live/live.js?dd5fb618daf9ea9e233c37caaa99002009e987:271:33)的http:// 在Tracker.Computation上的localhost:3000/client/views/live/live.js?dd5fb618daf9ea9e233c37caaa9ed200fe3e987:306:5在Tracker.Computation._compute(http:// localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36) .rcompute(http:// localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:302:14)在Tracker.flush(http:// localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:430:14)
当用户导航到新的URL /模板时,如何安全地停止/结束自动运行计算?
我在用iron:router.
Meteor.autorun和之间有什么区别Tracker.autorun?
我很清楚this.autorun在模板生命周期回调中使用的区别,但已经看到这两个可以互换使用,只是想确保我没有错过任何技巧.
我网站的某些页面是服务器端呈现的,因此通常的Meteor JavaScript包不可用.
我们希望保持页面尺寸不变,但是Tracker.autorun用于轻量级反应,我们怎样才能使用这片Meteor a-la-carte?
javascript reactive-programming meteor meteor-blaze meteor-tracker
我希望alert()每次在 React 中跟踪的 Meteor 订阅withTracker更改时都显示一个模式对话框(例如)。
我试过使用 Tracker.autorun来跟踪更改,但无法确定在代码中放置它的位置。它似乎在Component构造函数中不起作用,如果放在render().
这是我的代码的概述:
class Foo extends Component {
render() {
return (
<h1>Example Header</h1>
{ this.maybeShowAlert() }
);
}
maybeShowAlert() {
// ONLY if bar has been updated
alert('bar has changed');
}
}
export default withTracker(() => {
Meteor.subscribe('bar')
return {
bar: Bar.findOne({})
};
})(Foo);
Run Code Online (Sandbox Code Playgroud)