Vùng chứa của bạn đăng ký dữ liệu và giám sát ready
của đăng ký trạng thái:
createContainer(() => {
const todosHandle = Meteor.subscribe('tasks');
const loading = !todosHandle.ready();
return {
loading,
tasks: Tasks.find({}, { sort: { createdAt: -1 } }).fetch(),
};
}, App);
Điều này có nghĩa là thành phần của bạn sẽ nhận được loading
boolean prop cho biết dữ liệu có sẵn hay không. Bạn có thể sử dụng nó trong thành phần của mình để hiển thị loading
xem trong khi dữ liệu đang tải:
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>
);
}
}
hoặc bất kỳ sự kết hợp nào khác của các thành phần phụ thuộc vào trạng thái tải.
BTW, tasks
prop là một mảng, vì vậy hãy sử dụng tasks.length
thay vì Object.keys
có thể tốt hơn.