Ошибка Context.provider при обертывании моего компонента приложения с ним

#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. Да, это помогает. это глупая ошибка. Большое вам спасибо за ваш ответ 🙂