reactjs - 强制使用两个道具之一调用反应组件
问题描述
我正在构建一个具有两个可选道具的反应组件。虽然这两个道具都是可选的,但我希望至少其中一个在运行时传递。如果两个道具都缺失,那么组件应该无法渲染。对于上下文,我使用 Typescript 与功能组件反应,并且我的道具被定义为接口。查看下面的示例代码,它为我的自动建议组件定义了 props
interface AutosuggestProps {
name: string;
placeholder: string;
suggestions?: any[];
onChange?: (value: string) => void;
onSuggestionSelected: (value: object) => void;
httpSearch?: (abortController: AbortController, query: string) => Promise<FetchResponse<any>>
}
该Autosuggest
组件可以以两种方式使用
- 组件的创建者在运行时可以选择监听
onChange
事件然后执行搜索,然后通过suggestions
props 或更新建议 - 让
Autosuggest
组件处理搜索并更新它自己的状态,而不是依赖suggestions
传递给它的道具。
我已经取消清除onChange
并httpSearch
作为可选道具,但我希望其中至少有一个存在,否则组件应该无法渲染。我的意思是Autosuggest
应该像这样调用
<Autosuggest
name="person"
placeholder="Find person"
onChange={handleChange}
suggestions={suggestions}
/>
或者
<Autosuggest
name="person"
placeholder="Find person"
httpSearch={searchPerson}
/>
但从来没有这样
<Autosuggest
name="person"
placeholder="Find person"
/>
解决方案
推荐阅读
- bash - 在 bash 脚本中创建等待视图
- amazon-web-services - 更新 aws lambda 层依赖项
- go - 自动调整大小主窗口
- python - 从 arg 列表中选择 client.send_message() 中的用户
- ruby-on-rails - 在本地 Rails 4 应用程序中升级了 postgresql,现在是致命的:数据库“[myapp]_development”不存在
- .htaccess - .htaccess 重定向将子文件夹添加到链接路径
- regex - Powershell 正则表达式选择字符串的一部分
- javascript - 如何创建一个反应元素并对其应用 javascript 方法
- android-intent - 重新排序前后如何修复应用程序进入后台
- python - 如果更深的卷积层首先收敛,这意味着什么?