我正在尝试通过 Redux Toolkit 实现 Firebase 身份验证。但我认为由于缺乏知识我错过了一些东西。
My monitorAuthChange
回报undefined
.
我有两个单独的文件 - 第一个是 firebase 函数列表,第二个是 Redux Toolkit 切片。
import {
createUserWithEmailAndPassword,
onAuthStateChanged,
} from "firebase/auth";
import { auth } from "./firebaseConfig";
export const createAccount = async (email, password) => {
try {
await createUserWithEmailAndPassword(auth, email, password);
} catch (error) {
console.log(error);
}
};
export const monitorAuthChange = () => {
onAuthStateChanged(auth, (user) => {
if (user) {
return true;
} else {
return false;
}
});
};
import { createAsyncThunk, createSlice } from "@reduxjs/toolkit";
import { createAccount, monitorAuthChange } from "../../service/userServices";
export const createUser = createAsyncThunk(
"users/createUser",
async ({ username, password }) => {
await createAccount(username, password);
}
);
const initialState = { loginStatus: false };
const userSlice = createSlice({
name: "users",
initialState,
reducers: {},
extraReducers: {
[createUser.fulfilled]: (state, action) => {
const result = monitorAuthChange();
state.loginStatus = result;
},
[createUser.rejected]: (state, action) => {
state.loginStatus = false;
},
},
});
export const selectAllUsers = (state) => state.users;
export default userSlice.reducer;
有两件事让我很困惑:
-
- Thunk 有效 - 它创建帐户,我在 Firebase 中看到它。我需要以不同的方式跟踪请求结果吗?
-
- If add
console.log(user)
inside monitorAuthChange
它记录的数据取决于用户是否已创建。但仍然返回未定义。
希望您能阅读任何提示、建议或文章来理解我的错误。提前致谢。