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

如何在react typescript中设置道具类型

谭鹏云
2023-03-14

我学习打字稿。我想设置组件功能道具类型。但我不知道如何设置。

这是代码。

interface MovieProps {
    id: number;
    title: string;
    year: number;
}

function App() {
  ...
  const movies: MovieProps[] = [
    { id:1, title: 'movie1', year: 2018 },
    { id:2, title: 'movie2', year: 2019 },
    { id:3, title: 'movie3', year: 2020 },
    { id:4, title: 'movie4', year: 2021 },
  ];
  const renderMovies: JSX.Element[] = movies.map(movie => {
    return (
      <MovieCard key={ movie['id'] } movie={ movie } />
    );
  });
    ...
}

function MovieCard({ movie }: any) {  <- this part
  return (
    <div className="movie">
      <div className="movie-title">{ movie['title'] }</div>
      <div className="movie-year">{ movie['year'] }</div>
    </div>
  );
};

我不想设置“任何”。我设置了什么类型?

共有3个答案

仲俊豪
2023-03-14

您可以使用箭头语法执行如下操作:

interface MovieProps {
    id: number;
    title: string;
    year: number;
}
....

const MovieCard:React.FC<MovieProps>=({ id, title, year})=> { 
  return (
    <div className="movie">
      <div className="movie-title">{ title }</div>
      <div className="movie-year">{year}</div>
    </div>
  );
}; 
韦俊英
2023-03-14

更新类型如下:

function MovieCard({ movie }: {movie: MovieProps })
史景铄
2023-03-14

我会改变它,这样你就可以把道具传递给你想要使用的卡片,而不是容器对象作为道具。这也使得打字更简单。所以你可以这样做:

interface MovieProps {
    id: number;
    title: string;
    year: number;
}

function App() {
  ...
  const movies: MovieProps[] = [
    { id:1, title: 'movie1', year: 2018 },
    { id:2, title: 'movie2', year: 2019 },
    { id:3, title: 'movie3', year: 2020 },
    { id:4, title: 'movie4', year: 2021 },
  ];
  const renderMovies: JSX.Element[] = movies.map(movie => {
    return (
      <MovieCard key={ movie.id } {...movie} />
    );
  });
    ...
}

function MovieCard({ title, year }: MovieProps) {  <- this part
  return (
    <div className="movie">
      <div className="movie-title">{ title }</div>
      <div className="movie-year">{ year }</div>
    </div>
  );
};
 类似资料:
  • 问题内容: 我有一个组件。 如果组件没有,我想将prop设置为,否则in可以是可选的。我怎么做? 不需要道具: 需要道具: 如果和为空,则抛出错误,说是 propTypes: 谢谢 问题答案: 您不需要其他库,“ prop- types”提供了现成的功能。参见https://facebook.github.io/react/docs/typechecking-with- proptypes.htm

  • 问题内容: 我使用下面的代码在React组件上设置默认道具,但是它不起作用。在该方法中,我可以看到输出“ undefined props”已打印在浏览器控制台上。如何为组件道具定义默认值? 问题答案: 您忘记合上支架了。

  • 问题内容: 我有很多jar文件要添加到我的类路径中,因此,每次编译Java文件时,都会得到如下命令: 我尝试使用: 然后: 但是根本没有添加jar:由于缺少jar,我得到了错误信息…谢谢 问题答案: 也许您想尝试使用Maven来构建您的应用程序?它真的很容易设置,并且消除了依赖管理的所有问题。 同样从Java 6开始,您可以在类路径中使用通配符: set CLASSPATH = my_libs \

  • 我的 Jenkins 管道中有这个阶段: 在Jenkins"管理Jenkins"全局工具配置中,我有一个名为的Maven安装,版本。 运行此管道时,<code>mvnHome</code>为空,因为我在日志中得到了以下信息: 我确实在Jenkins服务器上找到了一个路径,它可以工作,但我不希望在此脚本中使用到mvn的硬编码路径。 我该如何解决这个问题? 编辑:答案摘要,使用。 我的工作代码现在是:

  • 在Jenkins脚本管道中,您可以像这样设置PATH env变量: 注意这里解释的路径MAVENhttps://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-withenv代码集环境变量: 要设置的环境变量列表,每个变量的形式为VARIABLE=value或VARIABLE=以取消设置其他定义的变量。您还可以使用语法PATH wh

  • 问题内容: 使用css-in-js方法将类添加到React组件,如何添加多个组件? 这是class变量: 这是我的用法: 上面的作品,但有没有办法添加两个类,而无需使用npm包?就像是: 问题答案: 您可以使用字符串插值: