#javascript #reactjs #react-context
#javascript #reactjs #реагировать-контекст
Вопрос:
Мое приложение работает нормально, пока я не добавлю эту строку кода <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;
и это файл auth-context
import { createContext } from "react";
export const AuthContext = createContext({
isLoggedIn: false,
login: () => {},
logout: () => {},
});
не удалось узнать, в чем проблема с контекстом
Ответ №1:
Попробуйте использовать AuthContext.Provider
вместо:
// Not AuthContext.provider
<AuthContext.Provider value={...}>
...
</AuthContext.Provider>
Комментарии:
1. Да, это помогает. это глупая ошибка. Большое вам спасибо за ваш ответ 🙂