Reactjs Typescript未处理拒绝(TypeError):setAuthTokens不是函数
我在React项目的Apps.jsx文件中定义了以下内容:Reactjs Typescript未处理拒绝(TypeError):setAuthTokens不是函数,reactjs,typescript,Reactjs,Typescript,我在React项目的Apps.jsx文件中定义了以下内容: ... omitted for brevity ... import {AuthContext, useAuth} from "./context/auth"; function Login (props: RouteComponentProps<TParams>) { ... omitted for brevity ... const {authTokens, setAuthTokens} = useAuth(
... omitted for brevity ...
import {AuthContext, useAuth} from "./context/auth";
function Login (props: RouteComponentProps<TParams>) {
... omitted for brevity ...
const {authTokens, setAuthTokens} = useAuth();
function postLogin() {
const url = 'http://localhost:8000/rest-auth/login/';
const withCredentials = true;
const method = 'post';
const data = {"username": userName, "password": password};
axios.request({url, withCredentials, data, method}).then(
result => {
// console.log('Login.postLogin.else result is :', result);
if (result.status === 200) {
setAuthTokens(result.data);
} else {
setIsError(true);
}
}); // .catch(e => {console.log('Login.postLogin.catch e is :', e); setIsError(true);});
}
useAuth声明如下:
import { createContext, useContext } from 'react';
export const AuthContext = createContext();
export function useAuth() {
return useContext(AuthContext);
}
在哪里向AuthContext添加authTokens和setAuthTokens
对我来说,它看起来像是一个空上下文,因此authTokens和setAuthTokens没有定义,而undefined不是一个函数,这就是为什么会出现错误
试试这个:
export const AuthContext = createContext()
export const AuthState = ({ children }) => {
const [authTokens, setAuthTokens] = useState([])
const value = {
authTokens,
setAuthTokens,
}
return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>
}
读你的答案让我想起我忘了在我的应用程序组件中设置上下文,比如“红色板球”,如果我的答案帮助你,你能考虑接受它作为最佳答案,所以问题可以被标记为解决吗?谢谢
const AuthContext = createContext()
function useAuth() {
return useContext(AuthContext)
}
// useAuth is an empty context, so both authTokens and setAuthTokens are undefined
const { authTokens, setAuthTokens } = useAuth()
export const AuthContext = createContext()
export const AuthState = ({ children }) => {
const [authTokens, setAuthTokens] = useState([])
const value = {
authTokens,
setAuthTokens,
}
return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>
}
const { authTokens, setAuthTokens } = useContext(AuthContext)