首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React PropTypes -只允许一个对象值?

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

Stack Overflow用户
提问于 2019-05-27 18:17:32
回答 1查看 1.5K关注 0票数 4

考虑如下所示的键和值映射对象:

代码语言:javascript
复制
export const PlaceholderVisibility = {
  Always: undefined,
  Never: null,
  OnFocus: true,
  OnBlur: false
}

您将如何使用PropTypes只允许在现有对象中指定的值?

这是我尝试过的:

代码语言:javascript
复制
import PropTypes from 'prop-types';
export const myTypes = {
  // ...
  visibility: PropTypes.oneOf(PlaceholderVisibility)
}

但我现在用的是PropTypes.bool因为这似乎适用于这种情况,但例如,当其中一个值是string类型时,它就不起作用了。

EN

回答 1

Stack Overflow用户

发布于 2021-02-22 18:47:40

若要仅允许object执行以下操作之一,请执行以下操作React PropTypes中的值

-你可以使用PropTypes.oneOf和Object.values()

如下所示:

代码语言:javascript
复制
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))
}

注意,上面的语句就等于:

代码语言:javascript
复制
export const myTypes = {
  // ...
  visibility: PropTypes.oneOf([
   'always',
   'never',
   'on-focus',
   'on-blur'
  ])
}

所以,最好是values在你的对象中有一个相当独特的来避免误用。例如,如果有人直接传递value,比如'always'string - react不会抱怨。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56324088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档