智慧大石
2023-10-14 19:26:47
我是 React 和 Firebase 的新手,我一整天都在嘗試解決這個小的用戶注冊問題。希望有人能幫助我,我將不勝感激????我正在使用 React 和 Firebase 制作一個類似 twitter 的博客網站,目前正在使用 Firebase 的 auth.createUserWithEmailAndPassword() 方法使用用戶名注冊新用戶。這就是我正在做的: import { auth } from '../firebase'; const onSubmit = async (data) => { auth .createUserWithEmailAndPassword(data.email, data.password) .then((result) => { result.user.updateProfile({ displayName: data.username, }); setUserError(!userError); window.localStorage.setItem('emailForSignIn', data.email); setRedirect(true); }) .catch((error) => { setUserError(!userError); setAlertMsg(error.message); }); };用戶提交表單后,他們將被重定向到主頁,然后我將頁面設置為他們當前的用戶名。我通過設置用戶名的狀態來設置用戶名,然后將其作為道具傳遞到我的所有頁面。const Main = ({SignOut}) => { const [userName, setUserName] = useState('') useEffect(() => { const getUserName = () => { auth.onAuthStateChanged((user) => { setUserName(user.displayName) console.log('Current userName is: ', user.displayName); }); } getUserName() }, []) return ( <Router> <Switch> <Route exact path="/"> <Navbar userName={userName} SignOut={SignOut} /> <Tweets userName={userName} /> </Route> <Route path="/profile"> <Navbar userName={userName} SignOut={SignOut} /> <Profile setUserName={setUserName} userName={userName} /> </Route> </Switch> </Router> )}幾乎一切都很完美,但是他們的用戶名只有在注銷并重新登錄時才會顯示。任何幫助都會很棒!
1 回答

心有法竹
TA貢獻1866條經驗 獲得超5個贊
這是我遇到的一個超級菜鳥錯誤,但我沒有使用 useEffect 來設置用戶名,而是將 setUserName 狀態傳遞給我的注冊組件,并完全取消了 useEffect。這解決了一切。
const onSubmit = async (data) => {
auth
.createUserWithEmailAndPassword(data.email, data.password)
.then((result) => {
result.user.updateProfile({
displayName: data.username,
});
// This is the state i was missing.
setUserName(data.username);
setUserError(!userError);
window.localStorage.setItem('emailForSignIn', data.email);
setRedirect(true);
})
添加回答
舉報
0/150
提交
取消