我有一个组件,接收一个道具的大小。道具可以是字符串或数字,例如“LARGE”或17。
我可以让React。PropTypes知道这可以是一个或另一个在PropTypes验证?
如果我不指定类型,我会得到一个警告:
道具类型大小无效;它必须是一个函数,通常是从 React.PropTypes。
MyComponent.propTypes = {
size: React.PropTypes
}
我有一个组件,接收一个道具的大小。道具可以是字符串或数字,例如“LARGE”或17。
我可以让React。PropTypes知道这可以是一个或另一个在PropTypes验证?
如果我不指定类型,我会得到一个警告:
道具类型大小无效;它必须是一个函数,通常是从 React.PropTypes。
MyComponent.propTypes = {
size: React.PropTypes
}
当前回答
size: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
了解更多信息:使用PropTypes进行类型检查
其他回答
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
size: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
了解更多信息:使用PropTypes进行类型检查
出于文档的目的,最好列出合法的字符串值:
size: PropTypes.oneOfType([
PropTypes.number,
PropTypes.oneOf([ 'SMALL', 'LARGE' ]),
]),
这可能对你有用:
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
这里有一个使用多原型和单一原型的例子。
import React, { Component } from 'react';
import { string, shape, array, oneOfType } from 'prop-types';
class MyComponent extends Component {
/**
* Render
*/
render() {
const { title, data } = this.props;
return (
<>
{title}
<br />
{data}
</>
);
}
}
/**
* Define component props
*/
MyComponent.propTypes = {
data: oneOfType([array, string, shape({})]),
title: string,
};
export default MyComponent;