Váš kontejner se přihlásí k odběru dat a sleduje, zda je předplatné ready
stav:
createContainer(() => {
const todosHandle = Meteor.subscribe('tasks');
const loading = !todosHandle.ready();
return {
loading,
tasks: Tasks.find({}, { sort: { createdAt: -1 } }).fetch(),
};
}, App);
To znamená, že vaše komponenta obdrží booleovské loading
prop, který označuje, zda jsou data dostupná či nikoli. Můžete jej použít ve své komponentě k vykreslení loading
zobrazit během načítání dat:
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>
);
}
}
nebo jakákoli jiná kombinace komponent, která závisí na stavu načítání.
BTW, tasks
prop je pole, takže pomocí tasks.length
místo Object.keys
je pravděpodobně lepší.