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

要求至少有一个属性传递给组件[typescript][duplicate]

牧熙云
2023-03-14

快速问题 - 假设我有一个这样的组件:

interface ComponentInterface {
    nameA: string;
    nameB?: string;
}

const Component: React.FC<ComponentInterface> = (props) => {
     const { nameA, nameB } = props 
     const name = nameB || nameA;

     return <div>Hello World! Name: {name}</div>
}

如果我们不传递 nameA,有没有办法在 Typescript 中强制使用 nameB?

写起来感觉不好

这是一个过于简化的ofc版本。提前泰!


共有1个答案

巫马炫明
2023-03-14

是的,您可以使用联合类型:


interface Props1 {
    nameA: string;
    nameB?: string;
}

interface Props2 {
    nameB: string;
}

type Props = Props1 | Props2

意思是,如果您传递名称 A则名称 B 是可选的。但是,如果您不传递名称A - 则需要名称B

 类似资料:
  • 我有这个OpenAPI模式: 所有属性都是必需的。这是用于<code>PUT/user/profile<code>的。 我会把它改成 。用户发送的参数只是他们只请求更改。系统验证至少需要一个参数。 我如何描述[用户名,电子邮件,描述,个人资料_图标]之一是必需的? 可接受的示例请求: 不可接受的示例(错误): 注释器很接近,但它似乎仅适用于模式,而不是属性。 https://swagger.io/

  • 英文原文:http://emberjs.com/guides/components/passing-properties-to-a-component/ 默认情况下,组件不能访问模板作用域下的属性。 例如,假设有一个用于显示一篇博客的blog-post组件: 1 2 3 4 <script type="text/x-handlebars" id="components/blog-post">

  • 我试图将一个useState函数传递给另一个prop,但我得到以下错误:未捕获范围错误:超出了最大调用堆栈大小 我在子组件中添加了useState函数作为按钮单击的句柄事件,并且假设该错误意味着它在循环中被调用?任何人都可以帮助我理解这里的问题吗?代码如下: 子组件(Inputfields.js):

  • 反应组分 如何在组件中声明输入组件?

  • 在我的子组件中,我定义了道具接口,并将其包含在React中。组件。 然后需要将这些道具从父组件传递到子组件。到目前为止,一切都是合理的。。 但是,当我使用react router Typescript中的RouteComponents Props扩展Props接口时,也要求我传递“历史、位置、匹配”,我认为我不应该手动传递。。。 我不认为它与RouteComponentProps特别相关,因为在某

  • 组件不直接在模板范围中访问属性。 因此,只需在组件减速时声明属性(例如:{{component-name title = title}})。 外部模板范围中的title属性在组件的模板中可用。 语法 (Syntax) {{post-action title=title}} 在上面的代码中,'post-action'组件具有'title'属性,并使用与属性名称('title')相同的名称进行初始化