Uw container is geabonneerd op gegevens en controleert of het abonnement ready
is staat:
createContainer(() => {
const todosHandle = Meteor.subscribe('tasks');
const loading = !todosHandle.ready();
return {
loading,
tasks: Tasks.find({}, { sort: { createdAt: -1 } }).fetch(),
};
}, App);
Dit betekent dat je component een boolean loading
. zal ontvangen prop die aangeeft of de gegevens al dan niet beschikbaar zijn. U kunt het in uw component gebruiken om een loading
. weer te geven bekijken terwijl de gegevens worden geladen:
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>
);
}
}
of een andere combinatie van componenten die afhangt van de laadtoestand.
BTW, de tasks
prop is een array, dus gebruik tasks.length
in plaats van Object.keys
is waarschijnlijk beter.