reactjs - 您能否指定必须提供一组道具中的至少一个道具?
解决方案
您可以为 指定可选的道具类型myPropA
,然后为 提供自定义验证道具功能myPropB
。您可以在所需的任何结构中提供您想要的任何自定义错误消息。您可以使用道具名称和组件名称等函数参数来构建此消息。此示例还仅使用属性名称myPropA
/myPropB
而不是引入额外的自定义属性键/名称。
import React from 'react';
import PropTypes from 'prop-types';
const Hello = ({ name, myPropA, myPropB }) => <h1>Hello {name}!</h1>;
Hello.propTypes = {
myPropA: PropTypes.string,
myPropB: function(props, propName, componentName) {
// required validation
if(!props.myPropA && !props.myPropB) {
return new Error(`Failed prop type: The prop '${propName}' is required in '${componentName}' when prop 'myPropA' is 'undefined', but it's value is '${props[propName]}'.`);
}
// string validation
if(!props.myPropA && props.myPropB && typeof props.myPropB !== 'string') {
return new Error(`Failed prop type: Invalid prop ${propName} of type '${typeof props[propName]}' supplied to ${componentName}, expected 'string'.`);
}
},
};
export default Hello;
这是一个实际的例子。
希望这会有所帮助!
推荐阅读
- java - 解决了!- Spring boot:获取 415 不支持的媒体类型
- python - 使用 ULMFiT 和 Python 中的 fastai 库进行文本分类 (NLP)
- gitlab - GitLab: stores large objects (LFS) outside of lfs_storage_path
- java - Why doesn't SpyPostProcessor implement getEarlyBeanReference() like AbstractAutoProxyCreator,it may cause circular reference Exception
- python - 禁用 python 问候/版本信息
- java - JDK version 1.8 in the system but JDK 11 on VScode
- node.js - Connection Not established in Mocha to MongoDB Atlas
- android - Centrally place menu items in bottom navigation view without text
- python - Python:cx_Oracle 不喜欢我输入日期的方式
- flutter - 从图像加载调色板后极度滞后