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
はデフォルト値として空の文字列に設定されていることです。次に、非同期メソッドで、プロミスが解決されるのを待ち、解決された後、状態変数に保存されている userId を使用してコンポーネントを再レンダリングする状態変数を設定します。しかし、状態変数が空の文字列に設定され、コンポーネントが再レンダリングされません。
私は React-native と AWS Amplify に慣れていないので、何がうまくいかないのか教えていただけると大変助かります。ありがとうございました。