javascript - 向映射组件传递和接收多个 props

标签 javascript reactjs typescript

我正在映射TeamsContainer组件并尝试向其传递多个 Prop 。然而我所尝试的似乎不起作用。这是调用该组件的页面:

const UserPage: NextPage<Props> = ({ tournaments, trainerData }) => {
  const [leagueFilter, setLeagueFilter] = useState("");
  return (
    <>
      <Navbar />
        <Select onChange={(e) => setLeagueFilter(e.target.value)}>
          <option value="Great">Great</option>
          <option value="Ultra">Ultra</option>
          <option value="Master">Master</option>
        </Select>
        {tournaments.map((tournament: Tournament, index: number) => (
          <TeamsContainer
            key={tournament.bout + tournament.league}
            {...tournament}
            leagueFilter={leagueFilter}
          />
        ))}
    </>
  );
};

这是 TeamsContainer 的一部分组件。

import { Tournament } from "../types";

interface Props {
  tournament: Tournament;
  leagueFilter: string;
}

const TeamsContainer: FunctionComponent<Props> = ({ leagueFilter, ...tournament }) => {

  return (
    <>
    </>
  );
};
export default TeamsContainer;

如果我替换<Props><Tournament>并删除 leagueFilter它可以工作,但是使用上面使用的代码我收到错误 Property does not exist on type '{ tournament: Tournament; children?: ReactNode; }'.ts(2339)

我不知道如何设置Props映射函数内的接口(interface),或者如果这是解决方法。

最佳答案

您现有的Props界面很好,问题是您不必要地使用了spread和rest。您的界面期望看到一个名为 tournament 的属性,而不是 Tournament 具有的各个属性。因此,向其传递一个锦标赛(tournament={tournament} 而不是...tournament):

{tournaments.map((tournament: Tournament, index: number) => (
  <TeamsContainer
    key={tournament.bout + tournament.league}
    tournament={tournament}
    leagueFilter={leagueFilter}
  />
))}

...并且在不使用剩余语法的情况下接收它(tournament 而不是 ...tournament):

const TeamsContainer: FunctionComponent<Props> = ({ leagueFilter, tournament }) => {
    // ...
};

关于javascript - 向映射组件传递和接收多个 props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69986449/

相关文章:

javascript - 将边界传递给 google places API

reactjs - 使用 react 和 express(nginx、docker)建立 web-socket 通信

javascript - 将 React 组件转换为 Typescript?

typescript - 在 TypeScript 中映射通用扩展参数类型

javascript - 更新加载 JSON 重复上次发布

javascript - SVG `<path>` 不精确

javascript - 流式传输文档数据后链接无法打开

CSS,获取一个Div来扩展页面的高度

javascript - React 子组件传递了一个函数,但在运行时不显示函数。

Angular 应用程序大小突然增加