コンテナはデータをサブスクライブし、サブスクリプションのready
を監視します 状態:
createContainer(() => {
const todosHandle = Meteor.subscribe('tasks');
const loading = !todosHandle.ready();
return {
loading,
tasks: Tasks.find({}, { sort: { createdAt: -1 } }).fetch(),
};
}, App);
これは、コンポーネントがブール値のloading
を受け取ることを意味します データが利用可能かどうかを示すprop。コンポーネントで使用して、loading
をレンダリングできます データの読み込み中に表示:
class App extends Component {
//...
render() {
const {loading, tasks} = this.props;
if (loading) {
return (
<div className="spinner">
Loading...
</div>
);
}
return (
<div className="container">
<header>
<h1>Todo List</h1>
</header>
//...
</div>
);
}
}
または、ロード状態に依存するコンポーネントの他の組み合わせ。
ところで、tasks
propは配列であるため、tasks.length
を使用します Object.keys
の代わりに おそらくより良いです。