我在我的应用中使用了react-komposer和React,并且我一度更改了反映当前用户的profile
集合项的用户Meteor.users
属性。这里的问题是它在render
的调用中没有被动地回送。无论我对Meteor.users集合做什么,即使我在Meteor.user()
函数中引用render
,也不会重新渲染组件。如果我做
render() {
console.log('rendered');
/// ...
}
然后我只能在控制台上看到“呈现”两次:一旦组件最初呈现,第二次其他订阅准备就绪。
我想订阅Meteor.users
收藏,但我不知道是否有办法。
我绝对可以使用Tracker对每个Tracker循环做出反应,但对我来说感觉太过分了。但这是唯一的办法吗?
另外,我肯定已经读过其他Q&至于Meteor.users
,如this one或this one,但将用户集合包装到pub / sub中的想法直接感觉不自然,几乎不是收听集合中每个更新的好方法。
答案 0 :(得分:2)
您必须在有关meteor.users集合的服务器代码上发布。
const composer = (props, onData) => {
const userHandle = Meteor.subscribe('allUsers');
if (userHandle.ready()) {
const users = Meteor.users.find({}).fetch();
onData(null, {
users,
});
}
};
export default composeWithTracker(composer)(YourComponent);
然后,您可以在容器上订阅该发布并查询Meteor.users集合并将该结果发送到组件。
{{1}}
在此之后,对YourComponent内的集合所做的任何更改都将反映在客户端。