Вы можете сделать это, введя промежуточный компонент <Loader>
, который обрабатывается, когда данные не готовы. Это только делает ваш компонент, когда у него есть данные. Код будет выглядеть следующим образом:
const Loader = props => {
if (props.loading) return <div>Loading...</div>
// This only gets rendered when we have data
return <DataTable {...props} />
}
export default withTracker(() => {
//withTracker runs twice - that is normal
const subsHandle = Meteor.subscribe("records");
const loading = !subsHandle.ready()
return {
loading,
records: Records.find({}).fetch()
};
})(Loader); // Render the Loader component
Это также означает, что ваш компонент DataTable может иметь необходимые типы PropTypes, например, для props.records