PropTypes dalam komponen stateless fungsional


Jawaban:


141

Dokumen resmi menunjukkan bagaimana melakukan ini dengan kelas komponen ES6, tetapi hal yang sama berlaku untuk komponen fungsional tanpa negara.

Pertama, npm install/ yarn addyang prop-jenis baru mengemas jika Anda belum melakukannya.

Kemudian, tambahkan propTypes Anda (dan defaultProps juga jika diperlukan) setelah komponen fungsional tanpa status telah ditentukan, sebelum Anda mengekspornya.

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;

Apa untungnya melakukan itu? Ini akan bekerja tanpa propTypes yang ditentukan juga.
Yarik

Terima kasih, saya pikir itu hanya untuk komponen kelas.
Doug

1
@Yarik Dengan menggunakan propTypes Anda mendapatkan beberapa pemeriksaan otomatis dilakukan untuk Anda. Anda akan mendapatkan peringatan setiap kali kode Anda "melanggar kontrak".
Iulius Curt

26

Tidak berbeda dengan stateful, Anda dapat menambahkannya seperti:

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

Berikut ini tautan ke prop-types npm


2
Meskipun jika Anda menggunakan versi yang lebih baru dari React, Anda akan ingin mengimpornya PropTypessendiri dalam hal ini Anda ingin berhenti Reactdan langsung sajatitle: PropTypes.string
terbang

1

Cara yang sama Anda lakukan di komponen berbasis kelas:

   import PropTypes from 'prop-types';

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

Catatan: Anda mungkin harus menginstal prop-typesmelalui npm install prop-typesatau yarn add prop-types, tergantung pada versi React yang Anda gunakan.


0

Ini dilakukan dengan cara yang sama seperti yang Anda lakukan dengan Komponen Berbasis Kelas

import PropTypes from "prop-types";

    const = function_name => {}

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

Semoga ini membantu !


0

Sejak React 15 , gunakan propTypesuntuk memvalidasi props dan sediakan dokumentasi dengan cara ini:

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

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

Kode ini menggunakan asumsi nilai default props={}jika tidak ada props yang diberikan ke komponen.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.