我正在try 上下文API,但它抛出一个错误,指出useAuth是未定义的.我试过很多方法,但都不管用.我已经被困了几个小时了. 以下是代码.
AuthContext.js
import React, { createContext, useContext, useState } from 'react';
const AuthContext = createContext();
export const AuthProvider = ({ children }) => {
const [isAuthenticated, setIsAuthenticated] = useState(false);
const setAuth = (authBool) => {
setIsAuthenticated(authBool)
}
return (
<AuthContext.Provider value={{ isAuthenticated, setAuth }}>
{children}
</AuthContext.Provider>
);
};
export const useAuth = () => {
return useContext(AuthContext);
};
App.js
import {render} from "react-dom"
import Cookies from "universal-cookie";
import React, { useEffect } from "react";
import { useAuth, AuthProvider } from './Contexts/Authcontext';
const cookies = new Cookies();
export default function App() {
const { setAuth } = useAuth()
useEffect(() => {
getSession();
}, []);
const getSession = () => {
fetch("/authorizer/session/", {
credentials: "same-origin",
})
.then((res) => res.json())
.then((data) => {
console.log(data);
setAuth(data.isAuthenticated);
})
.catch((err) => {
console.log(err);
});
};
return (
<React.StrictMode>
<AuthProvider>
<div id="App">
My APP
</div>
</AuthProvider>
</React.StrictMode>
);
}
const appDiv = document.getElementById("main")
render(<App/>, appDiv)
我判断了拼写错误,判断了是否导出了上下文,两个都很好.
EDIT:个 我发现错误发生在JS中的以下行.它通过错误useAuth在下面的行处未定义.不知道原因,因为导入操作正确.
function App() {
const {
setAuth
} = (0,_Contexts_Authcontext__WEBPACK_IMPORTED_MODULE_6__.useAuth)();
谢谢你的帮助