【发布时间】:2016-08-17 00:56:07
【问题描述】:
我已经检查过这个SO article,但是,该解决方案不起作用。我有一个使用 Firebase + Flux 的简单消息应用程序:
App
-UserList Component (sidebar)
-MessageList Component
UserList 组件从 this.state.threads 获取 props(状态属于主 App 组件)。
在我的 Flux ThreadStore 中,我将以下事件侦听器绑定到 firebaseRef:
const _firebaseThreadAdded = (snapshot) => {
threadsRef.child(snapshot.key()).on('value', (snap) => {
console.log('thread added to firebase');
_threads.push({
key: snap.key(),
threadType: snap.val().threadType,
data: snap.val()});
});
}
ref.child(ref.getAuth().uid).child('threads').on('child_added', Actions.firebaseThreadAdded);
UserList 使用 this.props.threads.map(thread => { return(<li>{thread.name}</li>) } )(摘要)然后根据 firebaseRef/userId/threads 中的线程键在侧栏中呈现线程名称列表。
但是,这不会呈现任何用户列表直到我单击应用程序中的任何按钮或直接从 Firebase Forge UI 中删除引用(我还有一个“child_removed”事件侦听器)。
对于我的一生,我无法弄清楚这一点。谁能解释为什么会发生这种情况/如何解决?我花了整整半天的时间尝试,但没有想到任何东西。
仅供参考:
-
相关 Dispatcher.register 条目:
case actionConstants.FIREBASE_THREAD_ADDED: _firebaseThreadAdded(action.data); threadStore.emitChange(); break; -
相关操作条目:
firebaseThreadAdded(data) { AppDispatcher.handleAction({ actionType: actions.FIREBASE_THREAD_ADDED, data }); },
【问题讨论】:
标签: javascript reactjs firebase flux