javascript - React PropTypes - 只允许一个对象值?

标签 javascript reactjs react-proptypes

考虑有一个键和值映射对象,如下所示:

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因为这似乎适用于这种情况,但是当例如其中一个值是字符串类型时,这仍然不起作用。

最佳答案

只允许 object 之一React PropTypes 中的值- 你可以使用PropTypes.oneOfObject.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在你的对象中相当独特以避免误用。例如,如果有人直接传递像 'always' 这样的值字符串 - react 不会提示。

关于javascript - React PropTypes - 只允许一个对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56324088/

相关文章:

javascript - 滚动到特定高度后删除类 jQuery

javascript - React 中的插值无法以这种方式工作,有人可以在这方面帮助我吗?

javascript - React Native `fetch` 不保留 cookie

reactjs - 如何修复React和Spring Web应用程序中的cors错误?

reactjs - 功能组件的 PropTypes.instanceOf 不起作用

javascript - 未捕获的 DOMException : Failed to execute 'pushState' on 'History' :

javascript - 使用 JavaScript 或 jQuery 创建序列步骤 [动画]

javascript - 我们可以在js中同时映射两个数组吗?

javascript - undefined 不是对象(评估 '_react.PropTypes.object' )

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