快速问题 - 假设我有一个这样的组件:
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版本。提前泰!
是的,您可以使用联合类型:
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')相同的名称进行初始化