0

クライアントのサブスクリプションを停止する適切な方法があるかどうか疑問に思っていました。

たとえば、私は 2 つのページを持っています。最初のページでは、クライアントをusersパブリケーションにサブスクライブし、2 番目のページではパブリケーションをサブスクライブしprojectsます。

クライアントがユーザー ページからプロジェクト ページに移動すると、プロジェクト ページでは必要ありませんが、クライアントはまだユーザーに登録されています。

私の最初の質問は、メモリまたは CPU が必要ですか? クライアントがルートからルートへと移動するとき、クライアントがますます多くの出版物を購読しているとき。

2 つ目: 正しい退会方法は?? たとえば、彼がプロジェクト ページに移動したときに、ユーザーの出版物の購読を解除します。

私が見るいくつかのパッケージはそれを行います。たとえばreactive-table

前もって感謝します!

4

1 に答える 1

3

通常、サブスクリプションを停止したい場合は、Meteor.stop() で行います。ガイドから、サブスクリプションを停止する方法について:

React の autorun や getMeteorData などのリアクティブ コンテキスト内で条件付きで Meteor.subscribe() を呼び出すか、Blaze コンポーネントで this.subscribe() を介して Meteor.subscribe() を呼び出すと、Meteor のリアクティブ システムが自動的に this.stop() を呼び出します。適切な時間に。

したがって、通常、サブスクリプションを停止する必要はありません。それは自動的に行われます。

-最初の質問については、はい、アプリケーションによっては CPU を集中的に使用する可能性があります。これが、たとえばチャット アプリケーションで複数の pub/sub を避けたい理由です。

- 2 番目の質問については、あなたの場合、必要なデータを必要なテンプレートだけに提供するために、ルーター レベルではなくテンプレート レベルのサブスクリプションを行う必要があります。この例を参照して、Flow Router でそれを行う方法を学習してください。同じことが他のルーターにも当てはまります。

Template.blogPost.onCreated(function() {
  var self = this;
  self.autorun(function() {
    var postId = FlowRouter.getParam('postId');
    self.subscribe('singlePost', postId);  
  });
});
于 2016-09-21T19:06:57.820 に答える