PropTypes trong thành phần không trạng thái chức năng


103

Nếu không sử dụng lớp, làm cách nào để sử dụng PropTypes trong thành phần không trạng thái chức năng của phản ứng?

export const Header = (props) => (
   <div>hi</div>
)

Câu trả lời:


141

Các tài liệu chính thức chỉ ra cách thực hiện điều này với các lớp thành phần ES6, nhưng điều này cũng áp dụng cho các thành phần chức năng không trạng thái.

Thứ nhất, npm install/ yarn addcác prop-loại mới gói nếu bạn chưa có.

Sau đó, thêm propTypes của bạn (và cả defaultProps nếu cần) sau khi thành phần chức năng không trạng thái đã được xác định, trước khi bạn xuất nó.

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;

Lợi ích của việc làm đó là gì? Nó cũng sẽ hoạt động mà không có propTypes xác định.
Yarik

Cảm ơn, tôi nghĩ nó chỉ dành cho các thành phần lớp.
Doug

1
@Yarik Bằng cách sử dụng propTypes, bạn sẽ nhận được một số kiểm tra tự động được thực hiện cho mình. Bạn sẽ nhận được cảnh báo mỗi khi mã của bạn "vi phạm hợp đồng".
Iulius Curt

26

Nó không khác với trạng thái, Bạn có thể thêm nó như:

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

Đây là một liên kết đến npm loại prop


2
Tuy nhiên nếu bạn đang sử dụng các phiên bản gần đây của Phản ứng bạn sẽ muốn nhập khẩu PropTypesvào riêng của mình trong trường hợp này bạn sẽ muốn rời khỏi Reactvà chỉ cótitle: PropTypes.string
flyingace

1

Tương tự như cách bạn làm trong các thành phần dựa trên lớp:

   import PropTypes from 'prop-types';

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

Lưu ý: Bạn có thể phải cài đặt prop-typesqua npm install prop-typeshoặc yarn add prop-types, tùy thuộc vào phiên bản React mà bạn đang sử dụng.


0

Nó được thực hiện giống như cách bạn làm với Các thành phần dựa trên lớp

import PropTypes from "prop-types";

    const = function_name => {}

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

Hi vọng điêu nay co ich !


0

Kể từ React 15 , hãy sử dụng propTypesđể xác thực các đạo cụ và cung cấp tài liệu theo cách này:

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

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

Mã này trên giả định về giá trị mặc định props={}nếu không có đạo cụ nào được cung cấp cho thành phần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.