У меня есть компонент, который получает опору для своего размера. Свойство может быть строкой или числом, например: "LARGE" или 17.

Могу ли я сообщить React.PropTypes, что это может быть одно или другое в проверке propTypes?

Если я не укажу тип, я получаю предупреждение:

тип пропуска размер недействителен; это должна быть функция, обычно из React.PropTypes.

MyComponent.propTypes = {
    size: React.PropTypes
}

Kevin Amiranoff

Ответов: 5

Ответы (5)

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 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

Вот профессиональный пример использования нескольких проптипов и одного проптипа.

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}
        
{data} ); } } /** * Define component props */ MyComponent.propTypes = { data: oneOfType([array, string, shape({})]), title: string, }; export default MyComponent;

2022 WebDevInsider