考虑如下所示的键和值映射对象:
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因为这似乎适用于这种情况,但例如,当其中一个值是string类型时,它就不起作用了。
发布于 2021-02-22 18:47:40
若要仅允许object执行以下操作之一,请执行以下操作React PropTypes中的值
-你可以使用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在你的对象中有一个相当独特的来避免误用。例如,如果有人直接传递value,比如'always'string - react不会抱怨。
https://stackoverflow.com/questions/56324088
复制相似问题