我想更新用户详细信息,然后单击“提交”,等待更新,然后将其发布到firebase。
我有以下内容:
export const writeToFirebase = details => {
return firebase
.database()
.ref("/")
.set({
id: details.id,
name: details.name,
username: details.username,
email: details.email
});
};
export const updateUserDetails = updatedUser => {
return dispatch => {
dispatch({ type: UPDATE_USER_DETAILS, updatedUser });
};
};
export const updateUserDetailsThenUpdateFirebase = updatedUser => {
return (dispatch, getState) => {
return dispatch(updateUserDetails(updatedUser)).then(() => {
const storeData = getState();
});
};
};
最后一个函数是我将在单击时调用的函数。中间的功能是接受输入,然后更新商店(目前可以正常使用)
但是,我无法读取未定义的then
吗?我尝试过以下操作:https://github.com/reduxjs/redux/issues/1676
我必须非常亲密,我只需要正确返回承诺即可。 有什么想法吗?
答案 0 :(得分:0)
好像您错过了writeToFirebase
通话,并从错误的地方拨打了then
,请尝试使用以下代码:
export const updateUserDetailsThenUpdateFirebase = updatedUser => {
return (dispatch, getState) => {
dispatch(updateUserDetails(updatedUser));
writeToFirebase(updatedUser).then(() => {
const storeData = getState();
// ... called after firebase finishes
});
};
};
答案 1 :(得分:0)
啊,所以我很亲近: 神奇而神奇地
这有效:
export const updateUserDetailsThenUpdateFirebase = updatedUser => {
return (dispatch, getState) => {
return dispatch(updateUserDetails(updatedUser)).then(() => {
const foundUser = getState().selectedUser;
const userToUpdate = getState().users.users.filter(
user => user.id === foundUser.id
);
return writeToFirebase(userToUpdate, 1);
});
};
};