javascript - Meteor 注销在选项卡之间不同步

标签 javascript meteor reactjs meteor-accounts

我正在使用 Meteor 和 React,并且在注销功能上遇到问题。当我在同一浏览器上打开 2 个以上选项卡时,如果我从一个选项卡注销,则其他打开的选项卡不会注销,但如果我使用它,则会挂起。注销只有两种方法:关闭选项卡或刷新它。

我尝试了相同的登录功能,它起作用了,登录状态在所有打开的选项卡之间同步。

我当前调用注销功能的代码:

signOut: function(event) {
    event.preventDefault();
    Meteor.logout();
    this.props.history.pushState(null, "/");
},

感谢您的帮助。

更新: 我检查了 websocket,似乎服务器确实发送了注销状态,但我的客户端代码没有调用注销方法(或者挂起)。那么挂起选项卡中的所有数据仍然存在。但我不知道如何进一步检查。

最佳答案

我找到了原因。这是因为如果用户未登录,我会尝试避免在 Meteor.publish() 上发送数据。问题是我不会在这种情况下返回任何内容。 我的解决方案是当用户未登录时返回 this.ready() ,如下所示:

Meteor.publish("myCollections", function (){
    if (!this.userId) return this.ready();

    return MyCollections.find({owner: this.userId});
});

关于javascript - Meteor 注销在选项卡之间不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584024/

相关文章:

javascript - 如何在函数中定义属性?

javascript - 我应该为每个集合使用一个发布还是多个?

在 array.map 内部分配时,Javascript onClick 不触发

reactjs - 访问构造函数内的 Props 值

javascript - jQuery.parseJSON 与 JSON.parse

javascript - Markdown-it 不工作,在页面加载时抛出错误

javascript - 在准备 70-480 Microsoft 考试时,我需要帮助理解为什么答案是正确的

collections - 在模板助手中使用 Meteor.users()

javascript - Office 365 Calendar API 基于创建事件触发对应用程序的调用

javascript - mdbreact 错误 - 元素类型无效 : expected a string (for built-in components)