CẬP NHẬT tháng 3 năm 2019
https://overreacted.io/how-are-feft-components-different-from-groupes/
CẬP NHẬT tháng 2 năm 2019:
Với việc giới thiệu các móc React , dường như các nhóm React muốn chúng tôi sử dụng các thành phần chức năng bất cứ khi nào có thể (điều này tốt hơn theo bản chất chức năng của JavaScript).
Động lực của họ:
1.) It’s hard to reuse stateful logic between components
2.) Complex components become hard to understand
3.) Classes confuse both people and machines
Một thành phần chức năng với các móc có thể làm hầu hết mọi thứ mà một thành phần lớp có thể làm, mà không có bất kỳ đề cập nào ở trên.
Tôi khuyên bạn nên sử dụng chúng ngay khi bạn có thể.
Câu trả lời gốc
Các thành phần chức năng không nhẹ hơn các thành phần dựa trên lớp, "chúng thực hiện chính xác như các lớp." - https://github.com/facebook/react/issues/5677#issuecomment-241190513
Liên kết trên có một ít ngày, nhưng tài liệu của React 16.7.0 nói rằng các thành phần chức năng và lớp:
"tương đương với quan điểm của React." - https://reactjs.org/docs/components-and-props.html#statless-fifts
Về cơ bản không có sự khác biệt giữa một thành phần chức năng và một thành phần lớp chỉ thực hiện phương thức kết xuất, ngoại trừ cú pháp.
Trong tương lai (trích dẫn liên kết ở trên) "chúng tôi [Phản ứng] có thể thêm các tối ưu hóa như vậy."
Nếu bạn đang cố gắng tăng hiệu suất bằng cách loại bỏ các kết xuất không cần thiết, cả hai phương pháp đều cung cấp hỗ trợ. memo
cho các thành phần chức năng và PureComponent
cho các lớp.
- https://reactjs.org/docs/react-api.html#reactmemo
- https://reactjs.org/docs/react-api.html#reactpurecomponent
Nó thực sự tùy thuộc vào bạn. Nếu bạn muốn ít nồi hơi hơn, hãy đi chức năng. Nếu bạn yêu thích lập trình chức năng và không thích các lớp học, hãy sử dụng chức năng. Nếu bạn muốn có sự thống nhất giữa tất cả các thành phần trong cơ sở mã của bạn, hãy đi với các lớp. Nếu bạn cảm thấy mệt mỏi với việc tái cấu trúc từ các thành phần dựa trên chức năng sang lớp khi bạn cần một cái gì đó như thế state
, hãy đi với các lớp.