PropTypes в функциональном компоненте без сохранения состояния


Ответы:


142

В официальных документы показывают , как сделать это с помощью классов ES6 компонентов, но то же самое относится и к лицам без функциональных компонентов.

Во - первых, npm install/ yarn addна новые типы проп-пакет , если вы еще не сделали.

Затем добавьте свои propTypes (и defaultProps, если требуется) после определения функционального компонента без сохранения состояния, прежде чем экспортировать его.

import React from "react";
import PropTypes from "prop-types";

const Header = ({ name }) => <div>hi {name}</div>;

Header.propTypes = {
  name: PropTypes.string
};

// Same approach for defaultProps too
Header.defaultProps = {
  name: "Alan"
};

export default Header;

Какая польза от этого? Он также будет работать без определенных propTypes.
— Ярик

Спасибо, я думал, это только для компонентов класса.
— Дуг

1
@Yarik Используя propTypes, вы автоматически выполняете некоторые проверки. Вы будете получать предупреждение каждый раз, когда ваш код «разрывает контракт».
— Юлиус Курт,

26

Это не отличается от stateful, вы можете добавить его так:

import PropTypes from 'prop-types';
Header.propTypes = {
  title: PropTypes.string
}

Вот ссылка на проп-типы npm


2
Хотя, если вы используете более свежие версии React, вы захотите импортировать PropTypesсамостоятельно, и в этом случае вы захотите прекратить Reactи простоtitle: PropTypes.string
— flyace

1

Так же, как и в компонентах на основе классов:

   import PropTypes from 'prop-types';

   const funcName = (props) => {
       ...
   }
   funcName.propTypes = {
       propName: PropTypes.string.isRequired
   }

Примечание. Возможно, вам придется установить prop-typesчерез npm install prop-typesили yarn add prop-types, в зависимости от версии React, которую вы используете.


0

Это делается так же, как и с компонентами на основе классов.

import PropTypes from "prop-types";

    const = function_name => {}

    function_name.propTypes = {
       prop_name : PropTypes.number
       . . . . . . . . . . . . . .
    }

Надеюсь это поможет !


-1

Начиная с React 15 , используйте propTypesдля проверки свойств и предоставления документации следующим образом:

import React from 'react';
import PropTypes from 'prop-types';

export const Header = (props={}) => (
   <div>{props}</div>
);
Header.propTypes = {
  props: PropTypes.object
};

Этот код принимает значение по умолчанию, props={}если компоненту не предоставлены реквизиты.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.