我有一个React组件,我希望强制提供两个属性中的一个-如果两个都没有提供,我希望能够触发PropType警告:
MyComponent.propTypes = {
firstProp: PropTypes.string.isRequired, // required only if `otherProp` not provided
otherProp: PropTypes.string.isRequired, // required only if `firstProp` not provided
}
我相信这是可能的与AirBnB的prop-types,但我想知道这是否可以做到只有React属性类型。
4条答案
按热度按时间f45qwnt81#
Here is one用于基于 prop 的条件 prop 类型。下面是我如何在一个项目中使用它来确定广告大小 prop 类型的一个例子。
kmynzznz2#
请使用
isRequiredIf
。4年前@evcohen写了一个PR,它将
isRequiredIf
添加到PropTypes库中。不幸的是,即使在那个时候,他们也将PropTypes库置于维护模式,不会将其合并。company I work for仍然使用PropTypes,因此我们派生了PropTypes库的
master
分支,并在中添加了此功能。现在你可以这样做:
超级干净,很小。
您可以在自己的项目中使用our fork,方法是使用以下内容更新您的
package.json
:1zmg4dgp3#
这里最初的问题可能是关于JavaScript React的,但如果您正在编写TS React代码并让TypeScript检查您的props类型,则可以使用区分类型联合来描述您的需求。
第一个
dbf7pr2w4#
您可以将此实现应用于许多不同的情况。例如,如果您传递了10个属性,但您只想接受其中的一些,则需要确定实现中的
count
变量