2

我正在尝试正确输入来自 algolia 即时搜索的连接列表。

我的自定义 Hits 组件:

type Props = { hits: User[]; onSelectUser: (user: User) => void };

const SearchResults: React.FC<Props> = ({ hits, onSelectUser }) => {
  return hits.map((hit: User) => (
    <UserCard user={hit} onSelectUser={onSelectUser} />
  ));
};

export default connectHits<Props>(SearchResults);

当我尝试使用该组件时:

<Hits hitComponent={() => (<SearchResults onSelectUser={setSelectedUser} />)}/>

我收到该组件上不存在 onSelectUser 的 TS 错误...当我忽略此 TS 错误时,我看到道具在 SearchResults 组件中可用。

我应该如何正确键入我的组件以确保键入仍然正常工作?

4

1 回答 1

5

您可以HitsProvided扩展react-instantsearch-core.

import { HitsProvided } from "react-instantsearch-core";

// ...

type Props = HitsProvided<UserRecord> & {
  onSelectUser: (user: User) => void;
};

const SearchResults: React.FC<Props> = ({ hits, onSelectUser }) => {
  return hits.map((hit: User) => (
    <UserCard user={hit} onSelectUser={onSelectUser} />
  ));
};

export default connectHits<Props, UserRecord>(SearchResults);

UserRecord将描述您的记录的形状(不是 API 返回的命中的形状,只有属性)。

于 2020-11-26T03:34:01.313 回答