首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在创建用户后调用updateProfile()

如何在创建用户后调用updateProfile()
EN

Stack Overflow用户
提问于 2022-06-06 21:23:08
回答 2查看 115关注 0票数 2

我正在尝试在创建用户属性之后设置它的.displayName属性。

问题是:用户需要一些时间来创建,所以在调用.updateProfile()之后就无法使用.createUserWithEmailAndPassword()。那么,我如何在创建之后立即更新.displayName呢?

现在我正试着这样做:

代码语言:javascript
复制
export function signup(currentUser, email, password) {
    createUserWithEmailAndPassword(auth, email, password)
    updateProfile(currentUser, {displayName : "some name"})   
}

当我调用这个函数时,我使用这个函数作为currentUser的值

代码语言:javascript
复制
export function useAuth() {
    const [ currentUser, setCurrentUser ] = useState();

    useEffect(() => {
        const unsub = onAuthStateChanged(auth, user => setCurrentUser(user));
        return unsub; // Cleaning Function
    }, [])

    return currentUser;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-06 21:32:02

createUserWithEmailAndPassword()updateProfile()方法都是异步,并返回承诺。因此,您要么需要把诺言串在一起,要么使用斯科特在评论中提到的async/await

1/连锁承诺

代码语言:javascript
复制
export function signup(currentUser, email, password) {
    createUserWithEmailAndPassword(auth, email, password)
    .then(userCredential => {
       updateProfile(userCredential.user, {displayName : "some name"})   
    })
}

使用async/await 2/使用

代码语言:javascript
复制
export async function signup(currentUser, email, password) {
    const userCredential = await createUserWithEmailAndPassword(auth, email, password);
    await updateProfile(userCredential.user, {displayName : "some name"})   
}
票数 2
EN

Stack Overflow用户

发布于 2022-06-06 21:35:03

updateProfile(currentUser, {displayName : currentUser.displayName})钩子更新了currentUser之后,需要调用useAuth

代码语言:javascript
复制
useEffect(() =>{
   if ('userName' in currentUser && currentUser.userName !== '') {
    updateProfile(currentUser, {displayName : currentUser.userName})  
   }
}, [currentUser])

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72523605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档