React Native Firebase 身份验证 Displayname null

React Native Firebase Authentication Displayname null

我已经在我的移动应用程序中使用 firebase 创建了身份验证。用户注册时,我需要使用 updateProfile 方法提供 displayName。当用户注册时,它会自动转到主页。我想要我在主页上用 displayName 调用的名称,但它是空的。每当我刷新页面时,信息就来了。

注册方法

 register: async (email, password, name, imageUri) => {
      try {
       return await auth()
          .createUserWithEmailAndPassword(email, password)
          .then( async (res) => {
            const update = {
              displayName: name,
              photoURL:
                imageUri,
            };
            await res.user.updateProfile(update)
          })
      } catch (e) {
        console.log(e);
      }
    }

我的导航

  const Routes = () => {
  const {user, setUser} = useContext(AuthContext);
 

  return (
      <NavigationContainer>
     {user ?  <Tabs.Navigator>
        <Tabs.Screen
          name="Homepage"
          component={Home}
          options={{
            title: 'Home Page',
            headerShown: false,
            tabBarIcon: props => <IconFeather name="home" {...props} />,
            tabBarIconStyle: {fontWeight: '900'},
          }}
        />
        <Tabs.Screen
          name="SecondPage"
          component={SecondPage}
          options={{
            headerShown: false,
            tabBarIcon: props => <IconFeather name="grid" {...props} />,
            title: 'Second Page',
          }}
        />
      </Tabs.Navigator> : <AuthStack />}
    </NavigationContainer>
  );
};

export default Routes;

这就是我拉取数据的方式。

const Header = () => {

  const {user} = useContext(AuthContext);

  return (
    <View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems:'center'}}>
      <View style={{maxWidth:'80%'}}>
        <Text style={{fontSize: 24, fontWeight: '500'}}>Selam,</Text>
        <Text style={{fontSize: 18, fontWeight: '500'}}>{user.displayName}</Text>
      </View>
      <View>
        <Image
          style={styles.tinyLogo}
          source={{
            uri: user.photoURL,
          }}
        />
      </View>
    </View>
  );
};

一刷新就有数据

推荐的方法是将用户 account-related 信息保存在数据库中。

async (email, password, name, imageUri) => {
  try {
    return await auth()
      .createUserWithEmailAndPassword(email, password)
      .then(async (res) => {
        const userInfo = {
          displayName: name,
          photoURL: imageUri,
        };
        // Add user account information in Firestore to be retrieved later.
        await firestore().collection("users").doc(res.user.uid).set(userInfo);
      });
  } catch (e) {
    console.log(e);
  }
};