前提・実現したいこと
firestoreのドキュメントからユーザー情報を取得し、その結果を配列で取得したいのですが、
呼び出し元でundefinedが返されます。なぜ取れないのか理由を教えていただけないでしょうか。
以下のように、ドキュメントを取得する定義を行い、
該当のソースコード
export const initGet = async (uid) => { const user = await query(collection(db, "users"), where("uid", "==", uid)); return await getDocs(user).then((querySnapshot) => { querySnapshot.forEach((doc) => { let users = []; users.push({ uid: doc.data().uid, name: doc.data().name, email: doc.data().email, image: doc.data().image, areaId: doc.data().areaId, buisinessId: doc.data().buisinessId, }); console.log(users); ⇐"この時点では配列取得が可能" return users; }); }); };
呼び出し先では以下のようにしています。
const currentUser = useContext(AuthContext); useEffect(() => { fetch(); }, [currentUser]); //usecontextが取れていない状態でfetchが走らないようdigで分岐を行う const fetch = async () => { if (dig(currentUser, "currentUser", "uid")) { const data = await initGet(currentUser.currentUser.uid); ⇐"undefined" await setUsers(data); }
useContextフックで橋渡ししようとしている親コンポーネントのJSXの部分を提示してください。
以下のように設定しています。
export const AuthContext = React.createContext();
export const AuthProvider = ({ children }) => {
const [currentUser, setCurrentUser] = useState(null);
useEffect(() => {
auth.onAuthStateChanged(setCurrentUser);
}, []);
return (
<AuthContext.Provider value={{ currentUser }}>
{children}
</AuthContext.Provider>
);
回答2件
あなたの回答
tips
プレビュー