【发布时间】:2021-12-06 13:21:35
【问题描述】:
我正在将我的 React 应用程序迁移到 firebase v9。目前我正在研究身份验证上下文。
问题在于onAuthStateChanged() 回调仅在初始化期间触发一次,而不会在signInWithEmailAndPassword() 或signOut() 上触发。刷新页面显示身份验证状态确实发生了变化,只有侦听器不会触发。
v9 中是否有任何可能导致此问题的更改,还是我遗漏了什么?
上下文
AuthContext.jsx
export const AuthContext = createContext(undefined);
export const AuthWrapper = ({ children }) => {
const [user, setUser] = useState(undefined);
useEffect(() => {
const unsubscribe = onAuthStateChanged(auth, (currentUser) => {
setUser(currentUser);
});
return unsubscribe();
}, []);
return <AuthContext.Provider value={user}>{children}</AuthContext.Provider>;
};
用法
index.jsx
import { AuthWrapper } from "./context/AuthContext";
ReactDOM.render(
<React.StrictMode>
<AuthWrapper>
<App />
</AuthWrapper>
</React.StrictMode>,
document.getElementById("root")
App.jsx
import { useContext } from "react";
import { AuthContext } from "./context/AuthContext";
function App() {
const user = useContext(AuthContext);
return <>{user ? <Dashboard /> : <Landing />}</>
}
【问题讨论】:
标签: reactjs firebase firebase-authentication react-hooks