gpt4 book ai didi

Firebase 登录 promise 在我点击屏幕上的任意位置后才能解决

转载 作者:行者123 更新时间:2023-12-02 04:24:47 25 4
gpt4 key购买 nike

我正在关注这个 React course on Udemy我遇到了一个非常奇怪的错误。

我正在使用 Firebase 通过电子邮件和密码进行身份验证。当用户点击登录时,我会发送一个名为 LOGIN_USER 的操作,它设置加载状态。

登录成功后,我会发送一个名为 LOGIN_USER_SUCCESS 的操作。停止加载状态。

出于某种原因,LOGIN_USER_SUCCESS直到我随机点击屏幕上的某个地方才会发生。

如果我删除该行 dispatch({ type: LOGIN_USER });要禁用加载状态,登录在几秒钟后返回成功。

My actions
-----------

export const loginUser = ({ email, password }) => {
return (dispatch) => {
dispatch({ type: LOGIN_USER });

firebase.auth().signInWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch((error) => {
console.log(error);

firebase.auth().createUserWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch(() => loginUserFail(dispatch));
});
};
};

const loginUserSuccess = (dispatch, user) => {
dispatch({
type: LOGIN_USER_SUCCESS,
payload: user
});
};


const INITIAL_STATE = {
email: '',
password: '',
user: null,
error: '',
loading: false
};


/// My reducer
---------------

export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case EMAIL_CHANGED:
return { ...state, email: action.payload };
case PASSWORD_CHANGED:
return { ...state, password: action.payload };
case LOGIN_USER:
return { ...state, loading: true, error: '' };
case LOGIN_USER_SUCCESS:
return { ...state, ...INITIAL_STATE, user: action.payload };
case LOGIN_USER_FAIL:
return { ...state, error: 'Authentication Failed.', password: '', loading: false };
default:
return state;
}
};

我试过 .then(user => console.log(user))直到我随机点击屏幕上的任何地方后,我才看到控制台日志。

如果我这样做 .then(console.log('foo')我立即看到 foo,但屏幕仍然挂起。

正如我提到的,我正在学习一个教程,完整的来源是 here on GitHub .我基本上得到了完全相同的代码。

最佳答案

我遇到过同样的问题。似乎某些 firebase 功能在模拟器或模拟器中无法正常工作。我尝试在 iphone 设备上运行我的应用程序,它工作得很好。

关于Firebase 登录 promise 在我点击屏幕上的任意位置后才能解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55743269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com