我正在尝试从与用户在表单中输入的ID匹配的集合中获取文档。所以我正在做的是在输入发生变化时订阅出版物。这行得通。我的问题是,当用户输入匹配的 id 时,withtracker 的 props 会填充数据,但用户第二次尝试使用根本不匹配的 id 时,props 不会改变,之前的数据仍然显示。
这是我的跟踪器代码
export default PlantDetailsContainer = withTracker(() => {
Meteor.subscribe('stickerById', null);
return {
stickeringDetails: Sticker.findOne()
}
})(AddPlantDetails);
这是我调用用户输入更改的函数
handleIdChange = (e) => {
Meteor.subscribe('stickerById', parseInt(e.target.value));
}
这是我的发布代码
Meteor.publish('stickerById', function stickerByIdPublication(id) {
return Sticker.find({ids: {"$in": [id]}});
});
您不需要每次值更改时都重新订阅。
流星在withTracker
方法中发挥了一些魔力来建立反应性。因此,请确保在该点传入 id(通常从路由参数传递(。
不确定 id 来自哪里 - 是用户输入的,还是下拉菜单?