PropTypes w funkcjonalnym składniku bezstanowym

103

Bez używania klasy, jak używać PropTypes w funkcjonalnym bezstanowym składniku reagowania?

export const Header = (props) => (
   <div>hi</div>
)
Alan Jenshen
źródło

Odpowiedzi:

142

W oficjalnych docs pokazać, jak to zrobić z klas składników ES6, ale to samo dotyczy obywatelstwa elementów funkcjonalnych.

Po pierwsze, npm install/ yarn addże nowe prop-ów pakiet , jeśli nie masz.

Następnie dodaj swoje propTypes (i defaultProps, jeśli jest to wymagane) po zdefiniowaniu bezstanowego składnika funkcjonalnego, przed jego wyeksportowaniem.

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;
Michael
źródło
Jaka korzyść z tego? Działałoby również bez zdefiniowanych typów właściwości propTypes.
Yarik
Dzięki, myślałem, że to tylko dla komponentów klasy.
Doug
1
@Yarik Używając propTypes, wykonujesz kilka automatycznych kontroli. Otrzymasz ostrzeżenie za każdym razem, gdy Twój kod „zrywa umowę”.
Iulius Curt
26

Nie inaczej jest ze stanowym, możesz to dodać tak:

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

Oto link do prop-types npm

I Putu Yoga Permana
źródło
2
Chociaż jeśli używasz nowszych wersji Reacta, będziesz chciał importować PropTypessamodzielnie, w takim przypadku będziesz chciał przerwać Reacti po prostu miećtitle: PropTypes.string
latanie Kwietnia
1

Tak samo jak w przypadku komponentów opartych na klasach:

   import PropTypes from 'prop-types';

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

Uwaga: Być może będziesz musiał zainstalować prop-typesprzez npm install prop-typeslub yarn add prop-types, w zależności od wersji Reacta, której używasz.

lokeshj
źródło
0

Robi się to tak samo, jak w przypadku komponentów opartych na klasach

import PropTypes from "prop-types";

    const = function_name => {}

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

Mam nadzieję że to pomoże !

Ashutosh Tiwari
źródło
-1

Od React 15 użyj propTypesdo sprawdzania poprawności właściwości i dostarczania dokumentacji w ten sposób:

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

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

Ten kod przy założeniu wartości domyślnej, props={}jeśli żadne właściwości nie zostały dostarczone do komponentu.

kirill .z
źródło