我想知道是否有正确的方法来阻止客户的订阅。
例如,我有2个页面,第一个我订阅客户端到users
出版物,第二个我订阅projects
出版物。
当客户端从用户页面转到项目页面时,他仍然订阅了用户,尽管他在项目页面上不需要它。
所以我的第一个问题是:它需要内存还是CPU?当客户订阅越来越多的出版物时,他从路线到路线。
第二种:取消订阅的正确方法是什么? 例如,当他进入项目页面时,取消订阅用户出版物。
我看到的一些包就是这样。例如reactive-table
。
提前谢谢!
答案 0 :(得分:3)
通常,如果您想停止订阅,请使用Meteor.stop()。从指南中,了解如何stop subscriptions:
如果您在反应性上下文中有条件地调用Meteor.subscribe()(例如React中的autorun或getMeteorData)或Blaze组件中的this.subscribe(),那么Meteor的反应系统将自动调用this.stop( )在适当的时候为你服务。
通常,您不必停止订阅。它是自动完成的。
- 对于您的第一个问题,是的,取决于应用程序,它可能是CPU密集型的,这就是您希望避免在聊天应用程序中使用多个pub / sub的原因。
- 对于第二个问题,在您的情况下,您需要做的是模板级订阅而不是路由器级别,以便将您需要的数据仅提供给您需要的模板。 See this example了解如何使用Flow Router,同样适用于其他路由器。
Template.blogPost.onCreated(function() {
var self = this;
self.autorun(function() {
var postId = FlowRouter.getParam('postId');
self.subscribe('singlePost', postId);
});
});