【发布时间】:2016-02-06 21:20:39
【问题描述】:
我有一个函数可以订阅 firebase 子 URL 上的 value 事件。好像
function getMessages(chat) {
var ref = new Firebase(".../"+chat+"/messages");
ref.limitToLast(10).on('value', function(snapshot) {
...
});
}
这是从 React 组件的 componentWillMount 方法调用的,如下所示:
componentWillMount() {
getMessages(this.props.chat);
}
我第一次调用这个函数时,一切正常,而且速度非常快。但是,如果我使用不同的 chat 参数调用它,则回调永远不会触发。第一次加载甚至没有一次。
据我所知,通过将console.log 放在每一行,componentWillMount 正在触发,getMessages 正在被调用。
什么给了?有任何想法吗?
谢谢。
编辑:注意我正在尝试在 React Native 中实现这一点。我进一步简化了,并让我的 React 组件直接连接到 firebase。 Check out this fiddle。这在小提琴中完美运行,但在 React Native 中,当它第一次连接时,如果你点击 back 并进入另一个聊天,它永远不会触发 value 事件。
【问题讨论】:
-
添加代码示例,我们可以在其中看到您如何调用 getMessages 以及使用什么聊天值
-
@Gavriel 我添加了更多细节。但这并不复杂。一切似乎都被正确调用,值回调永远不会触发。您知道有什么方法可以更好地调试 Firebase 中发生的事情。我尝试在 .on() 调用中添加取消回调,但也不会触发。
-
这听起来很奇怪。您可以设置一个重现该行为的 jsfiddle/jsbin 吗?如果不需要解决问题,请随意丢弃 react 部分。
-
@FrankvanPuffelen 我已经把它放在了一个小提琴中,它工作得很好。我开始认为这是我试图在 React Native 中执行此操作导致问题的事实。
标签: javascript firebase react-native