为什么我加了context之后页面一片空白,还没有报错?
来源:5-5 用useContext存储全局用户信息

全网最帅
2021-05-18
页面
src/index.tsx
context的index
auth-provider.ts
import React, { ReactNode, useState } from "react"
import { User } from "screens/project-list/search-panel"
import * as auth from '../auth-provider'
interface AuthForm {
username: string,
password: string,
}
const AuthContext = React.createContext<{
user: User | null,
register: (form: AuthForm) => Promise<void>,
login: (form: AuthForm) => Promise<void>,
logout: () => Promise<void>,
} | undefined>(undefined)
AuthContext.displayName = "AuthContext"
export const AuthProvider = ({children}: {children: ReactNode}) => {
const [user, setUser] = useState<User | null>(null)
const login = (form: AuthForm) => {
return auth.login(form).then(user => setUser(user))
}
const register = (form: AuthForm) => {
return auth.register(form).then(user => setUser(user))
}
const logout = () => {
return auth.logout().then(() => setUser(null))
}
return <AuthContext.Provider value={{ user, login, register, logout }} />
}
export const useAuth = () => {
const context = React.useContext(AuthContext)
if (!context) {
throw new Error('useAuth必须在authprovider中使用')
}
return context
}
调试显示问题出在auth-context->AuthProvider函数的return那边就追不下去了(下图打断点的那一行)
写回答
1回答
-
仔细对比源代码,<AuthContext.Provider 没加 children属性
312021-05-19
相似问题