Sự khác biệt giữa thành phần phản ứng và nguyên tố phản ứng là gì? Tài liệu đề cập đến cả hai nhưng không đi sâu vào chi tiết, một số phương pháp yêu cầu các thành phần, các yếu tố khác ...Sự khác biệt giữa thành phần phản ứng và nguyên tố phản ứng
Trả lời
Xem xét thành phần là Lớp và Phần tử làm ví dụ. Đó là nó!
Để giải thích thêm về câu trả lời, Phần tử phản ứng không có bất kỳ phương pháp nào và không có gì trên nguyên mẫu. Điều này cũng làm cho chúng nhanh.
"Một ReactElement là một ánh sáng, quốc tịch, bất di bất dịch, đại diện ảo của một phần tử DOM" - https://facebook.github.io/react/docs/glossary.html#react-elements
Một phản ứng thành phần render()
hàm trả về một cây DOM của phản ứng yếu tố đằng sau hậu trường (Đây là DOM ảo btw). Có một số ánh xạ phức tạp và logic khác có liên quan, nhưng về cơ bản các phần tử React này ánh xạ tới các phần tử DOM.
Bạn cũng có thể tạo ra một phần tử trực tiếp React.createElement(arg)
nơi arg có thể là một tên thẻ html, hoặc một lớp Component Phản ứng.
Phản ứng Elements
Một Phản ứng phần tử chỉ là một đồng bằng cũ Javascript Object
mà không phương pháp riêng. Nó có về cơ bản bốn thuộc tính:
type
, mộtString
đại diện cho một thẻ HTML hoặc một tài liệu tham khảo đề cập đến một Phản ứng Componentkey
, mộtString
để nhận diện một Phản ứng phần tửref
, một tham chiếu đến truy cập một trong hai nút cơ bản DOM hoặc Phản ứng phần Instance)props
(tínhObject
)
Một phần tử phản ứng không phải là một thể hiện của một thành phần phản ứng. Nó chỉ là một "mô tả" đơn giản về cách thể hiện thành phần phản ứng (hoặc tùy thuộc vào type
một thẻ HTML) được tạo ra sẽ trông như thế nào.
Phần tử phản ứng mô tả Thành phần phản ứng không biết nút DOM nào cuối cùng được hiển thị - liên kết này được trừu tượng hóa và sẽ được giải quyết trong khi hiển thị.
Phần tử phản ứng có thể chứa các phần tử con và do đó có khả năng tạo thành các cây phần tử đại diện cho cây DOM ảo.
Phản ứng Linh kiện và Phản ứng Instances Component
Một tùy chỉnh Phản ứng Component hoặc là tạo ra bởi React.createClass
hoặc bằng cách mở rộng React.Component
(ES2015). Nếu một thành phần React được khởi tạo, nó mong đợi một props
Object
và trả về một cá thể, được gọi là một thể hiện thành phần phản ứng.
Thành phần phản ứng có thể chứa trạng thái và có quyền truy cập vào các phương pháp React Lifecycle. Nó phải có ít nhất một phương thức render
, trả về một phần tử React (-tree) khi được gọi. Xin lưu ý rằng bạn không bao giờ tự xây dựng các thành phần React Component nhưng hãy để React tạo ra nó cho bạn.
A React Element
là những gì bạn sẽ coi là một phần tử html cơ bản (phần chính xác). Nó chỉ là một cách để tạo ra phần tử mà không sử dụng định dạng jsx gây tranh cãi nhiều.
A React Component
là những gì bạn có thể xem là đối tượng. Nó có các phương thức của nó, hỗ trợ React lifecycles
và thường không thể sử dụng được (ít nhất là không tìm thấy bất kỳ tái sử dụng nào, chào mừng bạn đến các ví dụ). Nó nhất thiết cần phải có một hàm render.
A React Class
là thứ bạn gọi là lớp học. Chức năng khôn ngoan React Class
và React Component
giống nhau. Cú pháp duy nhất là thay đổi thực sự, như React Component
được dựa trên ES6 syntax
. Một thay đổi lớn khác là sự ràng buộc mặc định của các hàm này không còn được hỗ trợ trừ khi sử dụng các hàm mũi tên. Mixins
cũng không còn được hỗ trợ từ ES6
.
React Element
- Đây là một đối tượng đơn giản mô tả nút DOM và các thuộc tính hoặc thuộc tính của nó mà bạn có thể nói. Nó là một đối tượng mô tả không thay đổi và bạn không thể áp dụng bất kỳ phương pháp nào trên đó.
Ví dụ -
<button class="blue"></button>
React Component
- Nó là một hàm hoặc lớp mà chấp nhận một đầu vào và trả về một yếu tố phản ứng. Nó phải giữ tham chiếu đến các nút DOM của nó và đến các thể hiện của các thành phần con.
const SignIn =() => (
<div>
<p>Sign In</p>
<button>Continue</button>
<button color='blue'>Cancel</button>
</div>
);
Có ba loại có liên quan của điều liên quan ở đây, với tên riêng của họ:
- Components
- trường Component
- Elements
này là hơi bất ngờ , vì nếu bạn quen với các khung giao diện người dùng khác, mi Ght hy vọng rằng sẽ chỉ có hai loại điều, tương ứng với các lớp học (như Widget
) và các trường hợp (như new Widget()
). Đó không phải là trường hợp trong React; các cá thể thành phần là không phải là giống như các phần tử, cũng không có mối quan hệ một-một giữa chúng. Để minh họa điều này, hãy xem xét mã này:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
class MyComponent extends React.Component {
constructor(props) {
super(props);
console.log('This is a component instance:', this);
}
render() {
const another_element = <div>Hello, World!</div>;
console.log('This is also an element:', another_element);
return another_element;
}
}
console.log('This is a component:', MyComponent)
const element = <MyComponent/>;
console.log('This is an element:', element);
ReactDOM.render(
element,
document.getElementById('root')
);
Trong đoạn mã trên:
MyComponent
(lớp tự) là một phầnelement
là một Element. Đó là không phải một phiên bản củaMyComponent
; thay vào đó, nó chỉ đơn giản là một mô tả của cá thể thành phần được tạo ra. Đó là một đối tượng với các thuộc tínhkey
,props
,ref
vàtype
. Tại đây,key
vàref
lànull
,props
là một đối tượng trống vàtype
làMyComponent
.- Một ví dụ của
MyComponent
được tạo (và, trong ví dụ trên, tự ghi lại từ hàm tạo) khielement
được hiển thị. another_element
cũng là một yếu tố, và cókey
,ref
,props
vàtype
thuộc tính giống nhưelement
không - nhưng lần này giá trị củatype
là chuỗi"div"
.
Lý do thiết kế tại sao React có ba khái niệm riêng biệt này được khám phá chi tiết trong bài đăng trên blog phản hồi của nhóm phản ứng React Components, Elements, and Instances, mà tôi khuyên bạn nên đọc. Cuối cùng, cần lưu ý rằng trong khi các tài liệu chính thức nghiêm ngặt về việc sử dụng thuật ngữ "thành phần" để chỉ một hàm hoặc lớp và "cá thể thành phần" để tham chiếu đến một cá thể, các nguồn khác không nhất thiết phải tuân theo điều này thuật ngữ; bạn sẽ thấy "thành phần" được sử dụng (không chính xác) có nghĩa là "thành phần thể hiện" khi đọc câu trả lời Stack Overflow hoặc các cuộc thảo luận trên GitHub.
Thành phần là một nhà máy để tạo thành phần.
- 1. sự khác biệt giữa getDefaultProps và getInitialState phản ứng js
- 2. Sự khác biệt giữa thành phần và vùng chứa trong phản ứng redux
- 3. Sự khác biệt giữa phản ứng-router 4.0, phản ứng-router-dom và phản ứng-router-redux là gì?
- 4. Sự khác biệt giữa lập trình hướng đối tượng và lập trình phản ứng
- 5. Trong phản ứng điều hướng sự khác biệt giữa routeName và khóa là gì?
- 6. Sự khác biệt giữa hashHistory và browserHistory trong bộ định tuyến phản ứng là gì?
- 7. Phản ứng của người mới bắt đầu về sự khác biệt giữa JavaScript và JSX
- 8. Phản ứng sự kiện onClick trên thành phần
- 9. jQuery trong thành phần phản ứng
- 10. Phản ứng gốc - Sự khác biệt giữa onChange vs onChangeText của TextInput
- 11. Phản ứng: Cách nghe các sự kiện thành phần con
- 12. Sự khác biệt giữa thành phần React và cá thể thành phần React là gì?
- 13. Phản ứng router không render thành phần
- 14. Tạo thành phần phản ứng động
- 15. 2 cách khác nhau để tạo Phản ứng thành phần
- 16. Phản ứng yếu tố và chức năng mũi tên béo
- 17. động Rendering một Phản ứng thành phần
- 18. Khởi tạo phản ứng thành phần nhà nước
- 19. Lỗi khi sử dụng thành phần được thực hiện với phản ứng, redux và phản ứng-redux và xây dựng với webpack trong ứng dụng phản ứng
- 20. Phác đồ phản ứng-router-dom phản ứng với thành phần
- 21. Sự khác biệt giữa phản chiếu dựa trên gương và phản xạ truyền thống là gì?
- 22. Sự khác biệt giữa Thành phần OSGi và Dịch vụ
- 23. Cách lấy giá trị từ một hàm phản ứng trong một thành phần phản ứng
- 24. Phản ứng thành phần văn bản Android gốc phản ứng đệm bổ sung
- 25. Sự khác nhau giữa lập trình Dataflow và lập trình phản ứng là gì?
- 26. Bảng phản ứng với chuối phản ứng và gtk2hs
- 27. truy cập phần tử gốc của phản ứng thành phần
- 28. Phần tử DOM phản ứng PropTypes?
- 29. Sự khác nhau giữa $ phản ứng (this) .attach ($ phạm vi) và $ scope.viewModel (this)
- 30. Phản ứng - khi nào gọi phản ứng như một biến vs nhập phản ứng
Liên kết này hiển thị thêm thông tin về điều này: https://facebook.github.io/react/docs/glossary.html – Hoffmann
Điều này thực sự sai. Yếu tố không phải là một ví dụ. Yếu tố là một mô tả. –
Bài đăng trên blog này giải thích thành phần và thành phần: https://facebook.github.io/react/blog/2015/12/18/react-components-elements-and-instances.html –