[英]React PropTypes - Allow only one of objects values?
考虑有一个像下面这样的键和值映射对象:
export const PlaceholderVisibility = {
Always: undefined,
Never: null,
OnFocus: true,
OnBlur: false
}
您将如何使用PropTypes
仅允许在现有对象中指定的值?
这是我尝试过的:
import PropTypes from 'prop-types';
export const myTypes = {
// ...
visibility: PropTypes.oneOf(PlaceholderVisibility)
}
但是我目前正在使用PropTypes.bool
因为它似乎适用于这种情况,但是,当例如其中一个值是字符串类型时,这仍然不起作用。
要在React PropTypes
只允许一个object
值 - 您可以像这样使用PropTypes.oneOf
和Object.values()
:
import PropTypes from 'prop-types';
export const PlaceholderVisibility = {
Always: 'always',
Never: 'never',
OnFocus: 'on-focus',
OnBlur: 'on-blur'
}
export const myTypes = {
// ...
visibility: PropTypes.oneOf(Object.values(PlaceholderVisibility))
}
注意,上面的语句就等于这个:
export const myTypes = {
// ...
visibility: PropTypes.oneOf([
'always',
'never',
'on-focus',
'on-blur'
])
}
所以,最好是有values
在你的对象相当独特的,以避免misusages。 例如,如果有人直接传递像'always'
字符串这样'always'
值 - react 不会抱怨。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.