子组件的订阅在ReactJS中不起作用

时间:2017-07-24 16:19:01

标签: reactjs meteor react-router

我在MEteor + React应用程序中创建了一个发布(在服务器上)和订阅(在客户端上)。我的问题是,我无法接收该出版物返回的数组。我在发布时使用了console.log,它记录了订阅密钥和选项。我在返回之前检查文件,这是正确的。但在客户端,仍然无法获得一系列文档。

这是我的componentDidMount代码,

Meteor.subscribe("messages",{},{},function(err){
     console.log("err",err);
     console.log(Messages.find().fetch());
});

此处未调用console.log。

这是我的发布代码,

if (Meteor.isServer) {
    Meteor.publish('messages', function (key,option) {
        console.log(key);
        return Messages.find(key,option);
    });
}

console.log在这里工作,我在返回之前检查了文档,这是正确的。

我在我的应用程序中也使用了react-router。我为我的父组件添加了路由。我遇到的问题是儿童部分。

我的代码出了什么问题?或者如何解决这个问题? 我使用了msavin:mongol,文件数仍为0。

1 个答案:

答案 0 :(得分:0)

我认为Meteor Chef正在推广一个不错的文件夹结构。如果碰巧使用它,只是为了确保服务器端操作到达服务器,这意味着它们被导入到服务器。只是从我的一个项目共享一个屏幕: enter image description here

register-api.js在我的服务器文件夹的main.js中进一步导入。

其次,如果您在订阅之外执行console.log(Messages.find()。fetch())该怎么办?你把它放入回调函数,不应该真的在那里。你通常做的是将Messages.find()。fetch()的结果传递给组件容器中的props,因此需要在订阅之外捕获结果。