我正在使用 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/