我正在嘗試對用戶進行身份驗證并從另一個檔案中提取背景關系。我覺得我在做的事情很簡單,但我總是遇到同樣的錯誤。我匯入 useContext 錯了嗎?
import React, { useContext } from "react";
import { NavigationContainer } from "@react-navigation/native";
import { AppNavigator } from "./app.navigator";
import { AccountNavigator } from "./account.navigator";
import { AuthenticationContext } from "../../services/authentication/authentication.context";
export const Navigation = () => {
const { isAuthenticated } = useContext(AuthenticationContext);
return (
<NavigationContainer>
{isAuthenticated ? <AppNavigator /> : <AccountNavigator />}
</NavigationContainer>
);
};
根據以下用戶的請求提供的背景關系,以幫助提供更多資訊
import React, { useState, createContext } from "react";
import * as firebase from "firebase";
import { loginRequest } from "./authentication.service";
export const AuthenticationContext = createContext();
export const AuthenticationContextProvider = ({ children }) => {
const [isLoading, setIsLoading] = useState(false);
const [user, setUser] = useState(null);
const [error, setError] = useState(null);
const onLogin = (email, password) => {
setIsLoading(true);
loginRequest(email, password)
.then((u) => {
setUser(u);
setIsLoading(false);
})
.catch((e) => {
setIsLoading(false);
setError(e);
});
};
return (
<AuthenticationContext.Provider
value={{
user,
isLoading,
error,
onLogin,
}}
>
{children}
</AuthenticationContext.Provider>
);
};
uj5u.com熱心網友回復:
您沒有將任何內容傳遞createContext給此處的呼叫:
export const AuthenticationContext = createContext();
所以useContext(AuthenticationContext)會回來undefined。因此,當您嘗試解構和讀取isAuthenticated屬性時,它會拋出此錯誤。似乎您需要您的背景關系成為具有isAuthenticated屬性的物件。
您可能會發現在此處閱讀 React 背景關系的基礎知識很有幫助,特別是關于useContext 此處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/371116.html
標籤:javascript 反应 反应原生 jsx
上一篇:php表中的進度條
