Typescript 和 React:在组件之间传递 props 与默认 props

2024-06-19

我对 Typescript 和使用 Typescript 创建 React 应用程序相当陌生。我在将道具从一个组件传递到另一个组件时遇到了一些麻烦。我在下面提供了一个示例,我的问题是围绕组件的默认道具。

当我在父组件中调用子组件时,出现错误:

Type '{}' is missing the following properties from type 'IProps': className, disabled ts(2739)

我认为因为我的子组件有默认的 props,所以当从其他组件调用该组件时,它们会填充任何缺失的 props。

我知道我可以在界面中将单个道具设置为可选IProps在我的子组件中使用className?: string但这不是我正在寻找的解决方案,因为它带来的问题多于它解决的问题。

当我从另一个组件调用子组件时,我不想必须注意每个默认道具,如下所示,对于某些组件,我有很多道具:<Child class={''} disabled={false} />

我确信有一个相当简单的解决方案,但到目前为止我找不到任何方向。欢迎任何建议或指导。

// Parent component: 

import React, { FC } from 'react'

import Child from './child'

const Parent: FC = () => {
    return (
        <Child />
    )
}

export default Parent


// Child component: 

import React, { FC } from 'react'

interface IProps {
  className: string
  disabled: boolean
}

const Child: FC<IProps> = ({ className, disabled }: IProps) => {
  return (
    <button className={className} disabled={disabled}>
      Click here
    </button>
  )
}

Child.defaultProps = {
  className: '',
  disabled: false,
}

export default Child

解决了这个问题,对于任何查看此答案的人:只需将默认道具以及任何道具传递到组件中,如下代码所示:

import React, { FC } from 'react'

interface IProps {
  className: string
  disabled: boolean
}

const Child: FC<IProps & Child.defaultProps> = ({ className, disabled }: IProps) => {
  return (
    <button className={className} disabled={disabled}>
      Click here
    </button>
  )
}

Child.defaultProps = {
  className: '',
  disabled: false,
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript 和 React:在组件之间传递 props 与默认 props 的相关文章

随机推荐

  • 如何使用 Docker 和 DigitalOcean Spaces 部署 TensorFlow Serving

    如何配置 TensorFlow Serving 以使用存储在 DigitalOcean Spaces 中的文件 重要的是解决方案 提供对这两个配置的访问and模型文件 提供对数据的非公开访问 我已经配置了一个名为your bucket na
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • 简化 CSS 代码

    我怎样才能简化这段代码 user panel subscribe user panel faves user panel tags user panel title user panel calendar a user panel item
  • Cloud9 IDE 本地主题

    Cloud9 IDE 文档说您可以导入 Textmate 主题 但我不明白 有人可以逐步解释我如何做到这一点吗 顺便说一句 我正在尝试将主题包含在我的本地主机上 我找到了这个链接 但我还是不明白 https groups google co
  • 在 C# 中向下转换对象列表

    如何向下转换对象列表 以便列表中的每个对象都向下转换为派生类的对象 这就是场景 我有一个基类List基本项 以及从它继承的两个类 public class BaseClass public List
  • 如果不使用 Promise 对象的 then 方法,是否不可能从 Promise 对象获取 [[PromiseValue]] ? [复制]

    这个问题在这里已经有答案了 该问题旨在成为规范的问题 答案 看什么是规范问题 答案 其目的是什么 https meta stackoverflow com q 291992 这里没有明确的答案 我在此发布问题 以代替之前提出和回答的问题 如
  • TransactionFlow(TransactionFlowOption.Mandatory) 操作行为(TransactionScopeRequired = true

    我正在尝试了解 WCF 事务 但对一个概念感到困惑 行为上有什么不同 TransactionFlow TransactionFlowOption Mandatory and OperationBehavior TransactionScop
  • jquery 更改事件和 aurelia 的技术

    我需要找到一个可靠的解决方案来使这两个框架很好地发挥作用 使用materialize css 他们的选择元素使用jquery来应用值更改 然而 这并没有触发奥里莉亚看到变化 使用 的技术 select change eventObject
  • 在 Intellij-Idea 调试器中转储一个巨大的数组

    Idea 有没有办法将一个非常大的整数数组的内容转储到剪贴板中 数组上的 复制值 不返回任何内容 要使用复制值获取剪贴板中的值 您需要定义一个 Java 数据类型渲染器 来解释数组的内容 右键单击您的数组变量 选择 查看为 gt 创建 在
  • 强制 IDataErrorInfo 验证

    我在某个面板上有两个控件 文本框和组合框
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 从排列生成器中随机选择?

    如何随机挑选所有结果 一一 不重复 itertools permutations k 或者这个 如何构建随机排列生成器 就像是shuffle permutations k 我正在使用Python 2 6 Yeah shuffle r 可以使
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • 有什么方法可以让dispatch_queue_t在单线程中工作吗?

    这是我的代码 interface MyObject property nonatomic dispatch queue t queue end implementation MyObject NSThread check id init s
  • Jquery Flipbook 上传 PDF

    我正在使用Builtbywill Flipbook div div title This is a page title img src image1 jpg div div img src image2 jpg div div title
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 包管理器控制台中缺少文件错误

    我们的开发团队的一些成员在打开包管理器控制台时开始看到以下错误 它完全阻止我们运行实体框架命令 我们已经检查过并且提到的文件确实存在 GetEvent types ps1xml Diagnostics Format ps1xml Diagn
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • 可以创建一个独立的方法/函数(没有任何类)

    我正在尝试理解闲聊 是否可以有一个独立的方法 函数 它不属于任何特定类 并且可以稍后调用 amethod amethod called printNl amethod 上面的代码给出以下错误 simpleclass st 1 expecte
  • Typescript 和 React:在组件之间传递 props 与默认 props

    我对 Typescript 和使用 Typescript 创建 React 应用程序相当陌生 我在将道具从一个组件传递到另一个组件时遇到了一些麻烦 我在下面提供了一个示例 我的问题是围绕组件的默认道具 当我在父组件中调用子组件时 出现错误