【发布时间】:2016-09-22 00:06:41
【问题描述】:
我正在使用firebase 构建一个react-redux 应用程序。
这是我的动作创建者:
export function fetchUser(uid) {
let ref = firebase.database().ref('users/' + uid)
return dispatch => {
ref.on("value", (snapshot) => {
let obj = snapshot.val()
dispatch({
type: FETCH_USER,
payload: obj
})
})
}
}
在我的 React 组件中,我希望能够链接它并连接另一个动作。所以像:
componentWillMount() {
let userId = 'some user id'
this.props.fetchUser(userId).then(()=> {
this.props.updateUser() // perform another action after the fetch is complete
})
}
我很难做到这一点。
- 一个问题是Firebase
on事件监听器没有实现promises 接口。 - 我不想将后续操作移动到
fetchUser操作中,因为其他组件也可以出于其他目的调用fetchUser。
我觉得这应该是直截了当的,但我对 redux 和 firebase 都是新手,所以我们将不胜感激。
【问题讨论】:
-
“一个问题是事件监听器上的 Firebase 没有实现 Promise 接口。”
on()可以触发多次,一个promise 只能解析一次。on()不可能是一个承诺。如果您只关心单个值,请使用once(),它确实返回一个承诺。 -
@FrankvanPuffelen 我同意并理解这一点。但是,我确实希望每次在我的组件中触发
on时都进行回调,以便我可以触发另一个动作。使用react-redux,我可以将其更改为props,但这感觉不对。 -
@FrankvanPuffelen 我发现使 firebase 与 redux 一起工作非常困难 tbh :) 直接打开了一个问题:github.com/firebase/reactfire/issues/115
标签: javascript firebase firebase-realtime-database redux react-redux