![](/img/trans.png)
[英]ReactJS and Typescript useContext - property does not exist on type
[英]TypeScript with React's useContext? property does not exist
尝试将 TypeScript 与 React 的 useContext 一起使用。 以为我已经弄清楚了,但在我解构自定义挂钩时收到一条错误消息,指出道具不存在。
这是我的自定义挂钩 - 我看到的没有 TypeScript 错误
type AppContext = {
handleLogin: HandleLogin;
};
type HandleLogin = (email: string, password: string) => void;
const AuthContext = createContext<AppContext | null>(null);
export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
const [user, setUser] = useState(null);
const router = useRouter();
// Handle login
const handleLogin: HandleLogin = async (email: string, password: string) => {
const userData = await login(email, password);
setUser(userData);
};
return (
<AuthContext.Provider value={{ handleLogin }}>
{children}
</AuthContext.Provider>
);
};
但是当我像这样破坏钩子时......
const { handleLogin } = useAuth();
我收到以下错误 - * 属性“handleLogin”在类型“AppContext | 上不存在” 无效的'。*
如果我在上下文的值中包含另一个值或 function 但遇到相同的错误,我会得到相同的错误。 真的不确定我错过了什么。
您将 context 的初始值分配为null
,因此在重组时需要确保 context 不是 null 。 或者您可以告诉 typescript context 将始终是AppContext
。
const AuthContext = createContext<AppContext>({} as AppContext);
它是类型安全的,因为当您的组件使用上下文时,该值将在 Provider 上设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.