【发布时间】:2021-09-01 04:06:18
【问题描述】:
我对打字稿很陌生,不知道如何最好地处理这种相当常见的情况。我获取数据并将其传递给模板组件:
const ProfilePage: FC = (): JSX.Element => {
const { data, isDataLoading } = useProfileData();
return (
<ProfileTemplate
data={!isDataLoading && data}
/>
);
};
这是ProfileTemplate 组件
import { profile_data, Maybe } from '../api-client';
type ProfileProps = {
data: Maybe<profile_data>;
}
export const ProfileTemplate: FC<ProfileProps> = ({ data }): JSX.Element => {
...
<StaticField label="First Name" text={data.first_name} />
<StaticField label="Last Name" text={data.last_name} />
...
}
这样调用它会导致类型 'false | Maybe<profile>' is not assignable to type 'Maybe<profile>'. 我可以删除首先检查 isDataLoading 的条件,但是然后我的 <StaticField> 组件中会出现 object is possibly null 错误。
first_name 和last_name 在数据库中可以为空或为空。虽然我意识到这不是导致object is possibly null 错误的原因,而是一个空的profile_data 对象,当时还没有从服务器返回数据。
我应该如何最好地处理这种情况?
My `<StaticField>` component looks like so: interface Props {
label: string;
text?: Maybe<string>;
}
export const StaticField: FunctionComponent<Props> = ({ label, text }): JSX.Element => {
return (
<Box>
<Text color="gray.BlackCoral" className={classes.label}>
{label}
</Text>
<Text>{text}</Text>
</Box>
);
};
【问题讨论】:
-
您的
useProfileData中有什么内容?
标签: reactjs typescript react-hooks