0

我正在使用 React-native 开发一个应用程序,并且我使用 AWS Amplify 作为它的后端。我想获取当前经过身份验证的用户的 ID 并将其注册为状态变量。我的代码是:

  const [userId, setUserId] = useState("");

  // set AuthUserId
  useEffect(() => {
    let isMounted = true;

    const setAuthUserId = async () => {
      try {
        const userInfo = await Auth.currentAuthenticatedUser();
        const id = userInfo.username;
        isMounted && setUserId(id);
        console.log("userId: ", userId);
      } catch (err) {
        console.log("Failed to catch the AuthUser Id", err);
      }

      return () => {
        isMounted = false;
      };
    };
    setAuthUserId();
  }, []);

我期望它的工作方式是首先userId将其设置为空字符串作为其默认值。然后在异步方法中,它等待 promise 被解析,并在它被解析后设置我的状态变量,这将导致组件这次使用存储在我的状态变量中的 userId 重新渲染。但是发生的情况是状态变量设置为空字符串,并且组件不会重新渲染。

我对 React-native 和 AWS Amplify 有点陌生,如果您让我知道出了什么问题,这将是一个很大的帮助。谢谢你。

4

0 回答 0