当前位置: 首页 > 知识库问答 >
问题:

可以把儿童道具界面统一成单亲界面吗?

澹台季萌
2023-03-14

我正在构建一个游戏。它有一个GameResult组件

export default function GameResult({
  scoresData,
  onPlayAgain,
  time,
  place,
}: GameResultProps) {
  return (
    <div className="c-game-result">
      <Leaderboard scoresData={scoresData} />
      <Stats time={time} place={place} />
      <PlayAgain onClick={onPlayAgain} />
    </div>
  );

以下是其子级具有的道具接口:

  • 排行榜(显示有关用户分数的数据):
interface Props {
  scoresData: string[];
}
    < li >统计数据(显示在游戏上花费的时间和占据的位置):
interface Props {
  time: string;
  place: string;
}
  • 再玩一次(再玩一次的按钮):
interface Props {
  onClick: React.MouseEventHandler<HTMLButtonElement>;
}

在父组件GameResult中,我有GameResultProps,它由所有这些接口组成:

interface GameResultProps {
  scoresData: string[];
  onPlayAgain: React.MouseEventHandler<HTMLButtonElement>;
  time: string;
  place: string;
}

我的问题是:如何将所有子接口统一到父级(GameResault)的单个道具接口中,同时为每个子接口保持单独的接口

  • 将道具界面从每个子级导入到父级,然后编写如下内容:
type GameResultProps = StatsProps & LeaderboardProps & PlayAgainProps

它工作,然而,它似乎完全无法维护。我必须跳转到三个文件才能理解GameResort应该接受什么道具。有没有办法简化它,以便我可以在父级(GameResault)中访问所有子道具类型(ScoresData、onPlay再一次、时间、地点)?

共有1个答案

诸葛柏
2023-03-14

您可以使用类型转换:

游戏结果组件中:

interface GameResultProps {
  scoresData: string[];
  onPlayAgain: React.MouseEventHandler<HTMLButtonElement>;
  time: string;
  place: string;
}

例如,在“统计信息”中:

type PropsStats = Pick<GameResultProps, "time" | "place">;

打字文档:实用程序类型

但是,为了简单起见,您也可以创建一个类型文件,在其中定义所有三种类型并将它们组合到GameResultProps中。就像你在帖子中所做的那样。

 类似资料:
  • 我正在为我目前所拥有的而挣扎。所以我想循环通过一个单一的父类别,并输出所有的子类别帖子与一个链接。 我可以让它工作,但它也会循环所有父类别。 所以我想要的是 我的当前代码如下所示,它为每个父级和子级类别创建了一个列表,因此: 我觉得我的$args也许能解决这个问题。 这表明:

  • 我有一个非常简单的功能组件,如下所示: 还有一个组件: 我不断收到以下错误: [ts]JSX元素类型“ReactNode”不是JSX元素的构造函数。类型“未定义”不能分配给类型“元素类”。[2605] 如何正确键入?

  • 我对gitlab ci子管道有问题。需要在具有多个应用程序的repo中的每次提交后自动触发ci管道。需要配置以检测哪些文件夹/文件被修改,以便知道要触发哪个应用程序管道 结构示例 Main“.gitlab ci.yml”是: appA1".gitlab-ci.yml"是: appA2“.gitlab ci.yml”是: 这种配置的目的是,例如,当我在应用**中更改文件时,管道会检测到更改并生成应用

  • 我们将 Sketch 的界面设计的非常简洁。最顶端的工具箱包含了最重要的操作。你可以用右侧的检查器来调整被选中图层的内容,左侧的窗口则会列出文件中的所有图层,中间当然就是你正在创作的画布。 Sketch 里没有浮动面板,检查器将会根据你选中的工具来显示所需控件,这样你能始终不受打扰的在画布上创作。 画布 Sketch 的画布尺寸是无限的,可以向任意方向无限延伸,你将拥有绝对的自由来规划自己的创作区

  • 用户界面 首先,我们需要熟悉mitmproxy的用户界面。打开您在其中启动mitmproxy的终端窗口。您处于mitmproxy的默认视图中,该视图显示流列表。您应该看到浏览器的HTTP请求以加载本教程。随着新请求的出现,mitmproxy将行添加到视图中。 命令效果请查看 用户界面 影片内容 欢迎来到mitmproxy教程。在本课程中,我们将介绍用户界面。 这是mitmproxy的默认视图。 随

  • 交互 showToast 基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38 showToast(Object object) 显示消息提示框。 参数 Object object 属性 类型 默认值 必填 说明 title string 是 提示的内容 icon string 'success' 否 图标 image string 否 自定义图标的本地路径,image