reactjs - React PropTypes : At least one of these props must be provided

标签 reactjs validation react-proptypes

假设我的组件有 2 个 props。

两者都不是必需的,本身,如果您愿意,您可以同时提供两者。 但您需要至少提供这两个 Prop 中的一个。

PropTypes支持这个验证规则吗?

如果是严格的异或怎么办?

<小时/>

注意:我并不是说允许已知 Prop 使用两种类型之一...这就是我的理解 PropTypes.oneOf(['News', 'Photos' ])PropTypes.oneOfType([...types...]) 正在讨论。

最佳答案

PropTypes 允许提供自定义验证,您可以在其中编写自己的逻辑和自己的错误,例如

MyComponent.propTypes = {
  News: (props, propName, componentName) => {
    if (!props.News && !props.Photos) {
      return new Error(`One among News or Photos prop must be provided`);
    }
  },

  Photos: (props, propName, componentName) => {
    if (!props.News && !props.Photos) {
      return new Error(`One among News or Photos prop must be provided`);
    }
  },
}

您可以添加更多逻辑来指定它们各自的类型

关于reactjs - React PropTypes : At least one of these props must be provided,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54751283/

相关文章:

ruby-on-rails - rails 中的 has_one 关系验证

reactjs - 如何将 Redux 的 useSelector 和 useDispatch Hook 与 PropTypes 结合使用

javascript - IntelliSense 不适用于我自己的 React 组件库

javascript - 在返回中 react Prop 验证

json - React js 从 API 的 json 响应创建下载文件

java - 实现公共(public)接口(interface) Hibernate + Spring 的类的自定义字段唯一性验证

javascript - 使用 .filter 删除 React 中的函数

java - Java 中的时区验证

javascript - 在 React 中返回 array.map() 的最佳方法?

javascript - 语义-ui-react语法错误: Adjacent JSX elements must be wrapped in an enclosing tag