PropTypes у функціональному компоненті без стану


Відповіді:


141

В офіційних документи показують , як зробити це з допомогою класів 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

Це не відрізняється від стану, ви можете додати його як:

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

Ось посилання на підтримку типів npm


2
Хоча якщо ви використовуєте новіші версії React, вам потрібно буде імпортувати PropTypesсамостійно, і в цьому випадку ви захочете піти Reactі просто матиtitle: PropTypes.string
flyingace

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

Сподіваюся, що це допомагає!


0

Починаючи з 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.