[英]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.