reactjs useTracker如何知道订阅什么?

fzsnzjdm  于 2023-04-29  发布在  React
关注(0)|答案(1)|浏览(182)

通过流星基本教程,我有一些问题,让“任务列表”自动更新时,我插入一个项目,所以想调试它。
主应用组件使用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魔法。

odopli94

odopli941#

你其实错了。useTracker不订阅任何内容。您自己负责订阅。useTracker所做的唯一一件事就是将集合的更新(Meteor术语中的“React数据源”)连接到react中的React事件(类似于useState)。
检查您的代码是否调用了Meteor.subscribe('tasks')(或类似的代码)。

相关问题