简体   繁体   English

我正在尝试使用反应钩子 useContext() 但它不起作用

[英]I am trying to use the react hook useContext() but its not working

i am trying to use the useContext hook for the first time and i am not getting the name displayed on screen, i have never used useContext ever before, so pls a little bit of explination of my mistake will be appreciated.我是第一次尝试使用 useContext 挂钩,但我没有在屏幕上显示名称,我以前从未使用过 useContext,所以请对我的错误进行一些解释,我们将不胜感激。 Here is the code: (edit: added App.js)这是代码:(编辑:添加了 App.js)

AuthContext.js AuthContext.js

const AuthContext = createContext()


export default AuthContext;


export const AuthProvider = ({children}) => {
    return (
        <AuthContext.Provider value={{'name':"Dennis"}}>
            {children}
        </AuthContext.Provider>
    )
}

Header.js Header.js

import React, { createContext, useContext } from 'react'
import { Link } from 'react-router-dom'
import AuthContext from '../context/AuthContext'


const Header = () => {
  let { name } = useContext(AuthContext)
  return (
    <div>
        <Link to="/">Home</Link>
        <span>  </span>
        <Link to="/login">Login</Link>
        <h1>Hello {name}</h1>

    </div>
  )
}

export default Header

App.js应用程序.js

import './App.css';
import {
  BrowserRouter,
  Routes,
  Route,
} from "react-router-dom";
import HomePage from './pages/HomePage';
import LoginPage from './pages/LoginPage';
import Header from './components/Header';
import PrivateRoute from './utils/PrivateRoute'
import AuthProvider from './context/AuthContext';


function App() {
  return (
    <div className="App">
      <BrowserRouter>
      <AuthProvider>
        <Header />
          <Routes>

            <Route path="/" element={ <PrivateRoute> <HomePage /> </PrivateRoute>} />
            <Route path="/login" element={<LoginPage />} />
            
          </Routes>
        </AuthProvider>
      </BrowserRouter>
    </div>
  );
}
export default App;

i have added the error screenshot我添加了错误截图在此处输入图像描述

import AuthProvider from './context/AuthContext';

Instead of the above, you have to import the AuthProvider like below since you have used named export for AuthProvider in the AuthContext.js file.而不是上面的,你必须像下面这样导入AuthProvider ,因为你在AuthContext.js文件中使用了AuthProvider的命名导出。

import { AuthProvider } from './context/AuthContext';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM