通过流星基本教程,我有一些问题,让“任务列表”自动更新时,我插入一个项目,所以想调试它。
主应用组件使用useTracker
函数钩子来“订阅”TasksCollection中的更改:
const tasks = useTracker(() => TasksCollection.find({}).fetch());
return (
<div>
<ul>{ tasks.map(task => <Task key={ task._id } task={ task }/>) }</ul>
</div>
);
我真的很难理解useTracker
是如何在引擎盖下工作的。fetch()
的结果不是一个普通数组吗?useTracker
怎么知道它需要订阅任何东西?我怀疑它会随机地对集合进行轮询。
我不确定这是否与Meteor有关,或者只是一些React Hooks魔法。
1条答案
按热度按时间odopli941#
你其实错了。
useTracker
不订阅任何内容。您自己负责订阅。useTracker
所做的唯一一件事就是将集合的更新(Meteor术语中的“React数据源”)连接到react中的React事件(类似于useState
)。检查您的代码是否调用了
Meteor.subscribe('tasks')
(或类似的代码)。