PropTypes in funktionaler zustandsloser Komponente


Antworten:


140

Die offiziellen Dokumente zeigen, wie dies mit ES6-Komponentenklassen gemacht wird. Gleiches gilt jedoch für zustandslose Funktionskomponenten.

Erstens npm install/ yarn adddas neue Prop-Typ-Paket, falls Sie es noch nicht getan haben.

Fügen Sie dann Ihre propTypes (und bei Bedarf auch defaultProps) hinzu, nachdem die zustandslose Funktionskomponente definiert wurde, bevor Sie sie exportieren.

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;

Was für ein Vorteil davon? Es würde auch ohne definierte propTypes funktionieren.
Yarik

Danke, ich dachte, es wäre nur für Klassenkomponenten.
Doug

1
@Yarik Durch die Verwendung von propTypes werden einige automatische Überprüfungen für Sie durchgeführt. Sie erhalten jedes Mal eine Warnung, wenn Ihr Code "den Vertrag bricht".
Iulius Curt

25

Es ist nicht anders mit dem Stateful, Sie können es hinzufügen wie:

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

Hier ist ein Link zu den Requisitentypen npm


2
Wenn Sie neuere Versionen von React verwenden, möchten Sie diese jedoch selbst importieren. PropTypesIn diesem Fall möchten Sie Reacttitle: PropTypes.string
aufhören

0

Genauso wie bei klassenbasierten Komponenten:

   import PropTypes from 'prop-types';

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

Hinweis: Je nach verwendeter React-Version müssen Sie möglicherweise prop-typesüber npm install prop-typesoder installieren yarn add prop-types.


0

Dies geschieht genauso wie bei klassenbasierten Komponenten

import PropTypes from "prop-types";

    const = function_name => {}

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

Hoffe das hilft !


0

Verwenden Sie seit React 15 Folgendes , propTypesum Requisiten zu validieren und Dokumentation bereitzustellen:

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

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

Dieser Code unter der Annahme eines Standardwerts, props={}wenn der Komponente keine Requisiten zur Verfügung gestellt wurden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.