メインページをロードする前にすべてのサブスクリプションの準備ができるように、パターンを作成しようとしています。Iron Router の waitOn に似ています。
この反応コンポーネントを見てください:
export const PageContainer = React.createClass({
render() {
return (
<div id="content-box">
<div className="banner banner-primary">
<div className="page_title pull-left">
{this.props.pageName}
</div>
</div>
<div>
{ FlowRouter.subsReady() ? this.props.page : (
<div> Loading .... </div>
)
}
</div>
</div>
);
}
});
ご覧のとおり、FlowRouter.subsReady()
ヘルパーを使用してページまたは読み込み中のテキストをレンダリングしています。
問題は、これが反応的でないことです。レンダリングは 1 回だけで、サブスクリプションの準備が整ったときにページを更新して表示することはありません。
これをリアクティブにするにはどうすればよいですか?
Flow Router のサブスクリプション管理を React で使用する最良の方法は何ですか。基本レイアウトがあり、ページのメインをロードする前にロード サインを表示したいと考えています。この関数をリアクティブにすることができれば、問題なく動作するはずです。
アップデート:
get Meteor データ関数にヘルパー FlowRouter.subsReady() をアタッチする必要があるようです
export const PageContainer = React.createClass({
mixins: [ ReactMeteorData ],
getMeteorData() {
return {
isLoading: FlowRouter.subsReady()
}
},
render() {
return (
<div id="content-box">
<div className="banner banner-primary">
<div className="page_title pull-left">
{this.props.pageName}
</div>
<i className="fa fa-question-circle help-icon pull-right"></i>
</div>
<div>
{ this.data.isLoading ? this.props.page : (
<div> Loading ... </div>
)
}
</div>
</div>
);
}
});
それは今働いているようです。これはそれを行う方法ですか?