我正在用firebase
構建react-redux
應用程序。使用Redux綁定Firebase
這裏是我的行動的創建者:
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
})
})
}
}
在我的陣營組件,我希望能夠鏈子它來包裝另一個動作。所以像這樣:
componentWillMount() {
let userId = 'some user id'
this.props.fetchUser(userId).then(()=> {
this.props.updateUser() // perform another action after the fetch is complete
})
}
我很難做到這一點。
- 一個問題是,Firebase
on
事件偵聽器沒有實現Promise接口。 - 我不想移動
fetchUser
內的後續操作,因爲其他組件可能會調用fetchUser
以及用於其他目的。
我覺得這應該是直截了當的,但我對redux以及firebase都是新手,所以所有的幫助將不勝感激。
「一個問題是,Firebase on事件偵聽器沒有實現Promise接口。」 'on()'可以多次觸發,一個promise只能解析一次。 on()'不可能是一個承諾。如果你只關心單個值,那麼使用'once()'哪個*會返回一個承諾。 –
@FrankvanPuffelen我同意並理解這一點。不過,我每次在組件中觸發一次回調都需要回調,以便我可以觸發另一個動作。使用'react-redux',我可以將其作爲'props'的改變,但是這並不正確。 – Rajat
@FrankvanPuffelen我發現使用redux非常辛苦tbh使firebase工作:)直接打開一個問題:https://github.com/firebase/reactfire/issues/115 – Rajat