Il tuo container si iscrive ai dati e monitora il ready
dell'abbonamento stato:
createContainer(() => {
const todosHandle = Meteor.subscribe('tasks');
const loading = !todosHandle.ready();
return {
loading,
tasks: Tasks.find({}, { sort: { createdAt: -1 } }).fetch(),
};
}, App);
Ciò significa che il tuo componente riceverà un loading
booleano prop che indica se i dati sono disponibili o meno. Puoi usarlo nel tuo componente per eseguire il rendering di un loading
visualizzare durante il caricamento dei dati:
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>
);
}
}
o qualsiasi altra combinazione di componenti che dipende dallo stato di caricamento.
A proposito, le tasks
prop è un array, quindi usando tasks.length
invece di Object.keys
è probabilmente migliore.