[英]When I update my context.provider's value, the child components don't change color
[英]Context.provider throw error when wrapping my app component with it
我的應用程序運行良好,直到我添加這行代碼 <AuthContext.provider> 並用它包裝應用程序組件:
錯誤:元素類型無效:應為字符串(對於內置組件)或類/函數(對於復合組件)但得到:未定義。 您可能忘記從定義組件的文件中導出組件,或者您可能混淆了默認導入和命名導入。
這是我的應用程序
import React, { useState, useCallback } from "react";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import Users from "./pages/Users";
import MainNavigation from "./common/Navigation/MainNavigation";
import UserPlaces from "./pages/places/UserPlaces";
import NewPlace from "./pages/places/NewPlace";
import UpdatePlace from "./pages/places/UpdatePlace";
import Auth from "./pages/Users/Auth";
import { AuthContext } from "./context/auth-context";
const App = () => {
const [isLoggedIn, setIsLoggedIn] = useState(false);
const login = useCallback(() => {
setIsLoggedIn(true);
}, []);
const logout = useCallback(() => {
setIsLoggedIn(false);
}, []);
return (
<AuthContext.provider
value={{ isLoggedIn: isLoggedIn, login: login, logout: logout }}
>
<Router>
<MainNavigation />
<main>
<Switch>
<Route path="/" component={Users} exact />
<Route path="/:userId/places" component={UserPlaces} exact />
<Route path="/places/new" component={NewPlace} exact />
<Route path="/places/:pId" component={UpdatePlace} exact />
<Route path="/auth" component={Auth} exact />
</Switch>
</main>
</Router>
</AuthContext.provider>
);
};
export default App;
這是身份驗證上下文文件
import { createContext } from "react";
export const AuthContext = createContext({
isLoggedIn: false,
login: () => {},
logout: () => {},
});
不知道上下文有什么問題
嘗試使用AuthContext.Provider
代替:
// Not AuthContext.provider
<AuthContext.Provider value={...}>
...
</AuthContext.Provider>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.