React PropTypes:允许一个prop的不同类型的PropTypes

问题描述 投票:158回答:4

我有一个组件,它的大小接收道具。道具可以是字符串或数字ex:"LARGE"17

我可以让React.PropTypes知道这可以是propTypes验证中的一个或另一个吗?

如果我没有指定类型,我会收到警告:prop type `size` is invalid; it must be a function, usually from React.PropTypes.

MyComponent.propTypes = {
    size: React.PropTypes
}
reactjs react-proptypes
4个回答
421
投票
size: PropTypes.oneOfType([
  PropTypes.string,
  PropTypes.number
]),

了解更多:Typechecking With PropTypes


11
投票

出于文档目的,最好列出合法的字符串值:

size: PropTypes.oneOfType([
    PropTypes.number,
    PropTypes.oneOf([ 'SMALL', 'LARGE' ]),
]),

6
投票

这可能对你有用:

height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),

-2
投票
import React from 'react';              <--as normal
import PropTypes from 'prop-types';     <--add this as a second line

    App.propTypes = {
        monkey: PropTypes.string,           <--omit "React."
        cat: PropTypes.number.isRequired    <--omit "React."
    };

    Wrong:  React.PropTypes.string
    Right:  PropTypes.string
© www.soinside.com 2019 - 2024. All rights reserved.