【发布时间】:2022-01-08 07:02:20
【问题描述】:
尝试在 Next.js 和 React-query 中使用严格的 typescript
useQuery 的返回数据是 Post | 存在问题不明确的。 所以我应该用 useQuery 给出的数据不为空!分配给 useState 时的运算符
ESlint 不喜欢非空类型断言。 我知道我可以把它关掉……但我想做严格的类型检查,所以我不想避免这种情况。
我发现的一种方法是使用 if 语句进行空检查 但是 React Hooks 不能用 if 语句来包装它......
有什么绝妙的方法吗?
我的代码是这样的
const Edit = () => {
const router = useRouter();
const { id } = router.query;
const { data } = useQuery<Post>('postEdit', () => getPost(id as string));
const [post, setPost] = useState<TitleAndDescription>({
title: data!.title,
content: data!.content,
});
const editMutation = usePostEditMutation();
return (
<MainLayout>
<Wrapper>
{data && <Editor post={post} setPost={setPost} />}
</Wrapper>
</MainLayout>
);
};
export interface TitleAndDescription {
title: string;
content: Descendant[];
}
【问题讨论】:
标签: reactjs typescript react-query