Reactjs 使用TypeScript创建React上下文以共享状态
我试图用TypeScript创建一个Reactjs 使用TypeScript创建React上下文以共享状态,reactjs,typescript,use-context,Reactjs,Typescript,Use Context,我试图用TypeScript创建一个React上下文,以便在组件之间共享状态。创建上下文时,我尝试将null作为初始值传递 //contexts.ts文件 从“react”导入{createContext}; export const AuthorContext=createContext(null); 但是,当尝试将状态值和setter函数传递给提供程序的值时,这会导致问题,因为不能分配给null类型 const[message,setMessage]=useState(“”); 因此,我
React上下文
,以便在组件之间共享状态。创建上下文时,我尝试将null
作为初始值传递
//contexts.ts文件
从“react”导入{createContext};
export const AuthorContext=createContext(null);
但是,当尝试将状态值
和setter函数
传递给提供程序的值
时,这会导致问题,因为不能分配给null类型
const[message,setMessage]=useState(“”);
因此,我尝试使用错误消息提供的类型定义创建一个接口
接口IStateStringDef{
stateVal:字符串;
setStateVal:反应、调度;
}
并更新我的上下文
和提供程序
//contexts.ts文件
export const AuthorContext=createContext(null);
//提供程序所在的文件
这很有效,但似乎不是最正确、最优雅的方式,在TypeScript中创建和使用上下文的正确方式是什么?您肯定需要一个用于上下文的接口或类型(如IStateStringDef)
接口IStateStringDef{
消息:字符串;
setMessage:React.Dispatch;
}
你不需要
null
,
您可以将默认值传递给上下文,如createContext({message:“”,setMessage:()=>{});
这样做是正常的吗?是的,但是没有null
谢谢,在接口中使用React.Dispatch
作为类型似乎很奇怪,但如果这是正确的方法,我将使用它。
interface IStateStringDef {
message: string;
setMessage: React.Dispatch<React.SetStateAction<string>>;
}