我经历了几个类似的问题,但无法解决这个问题。我一直在关注 2019 年的教程,但我无法找到在 2020 年做同样事情的正确方法。这是我遇到错误的行:
ERROR: 'HotelsQuery' only refers to a type, but is being used as a namespace here.ts(2702)
type IHotelsProps = HotelsQuery.Props<IHotelsBaseProps> & RouteComponentProps;
我从生成的模型文件中传递 HotelsQuery,定义为:
export type HotelsQuery = (
{ __typename?: 'Query' }
& { hotels?: Maybe<(
{ __typename?: 'HotelTypeConnection' }
& { edges: Array<Maybe<(
{ __typename?: 'HotelTypeEdge' }
& { node?: Maybe<(
{ __typename?: 'HotelType' }
& Pick<HotelType, 'id' | 'title' | 'body'>
)> }
)>> }
)> }
);
它被传递给的类:
class Hotels extends React.Component<IHotelsProps, IHotelsState> {
constructor(props: IHotelsProps) {
super(props);
const query = queryString.parse(props.location.search);
this.state = {
searchQuery: query && query.search
? query.search.toString() : undefined
};
}
public render() {
const { searchQuery } = this.state;
const { data } = this.props;
return (
<Row>
<Col span={12} offset={6}>
<Divider>Add Hotel</Divider>
<Divider>Hotels</Divider>
<Input.Search
placeholder="Search..."
enterButton="Search"
defaultValue={searchQuery}
onChange={this.handleSearchQueryChange}
onSearch={this.handleSearch}
/>
{data!.loading ? (
<Spin style={{ marginTop: 16, display: 'block' }} /> )
: (
<div>
{data!.notes!.edges.map(edge => (
<Card
key={edge!.node!.id}
style={{ marginTop: 16 }}
actions={[
<Icon
type="delete"
key={edge!.node!.id}
onClick={() => this.handleDeleteHotel(edge!.node!.id)}
/>
]}
>
<Card.Meta
title={edge!.node!.title}
description={edge!.node!.body}
/>
</Card>
))}
</div>
)}
</Col>
</Row>
);
}