React Cơ bản: JSX và Virtual DOM

Rate this post

Đối tượng của Virtual DOM trong React

Virtual DOM của React là cây của ReactElement.

ReactElement

React sẽ lấy các ReactElement và đặt chúng vào các DOM thực sự cho chúng ta.

Một trong những cách tốt nhất để hiểu về ReactElement là sử dụng chúng trong trình duyệt, vậy hãy thử bắt đầu nhé!

Đầu tiên, bạn cần edit file index.html (có thể sử dụng basic template như thế này) bằng cách thêm 1 <div id="root"></div> trong thẻ <body>.

Bây giờ, chúng ta sẽ thử thêm các tag HTML như <b> vào trong DOM sử dụng React nhé.

Chúng ta sử dụng phương thức createElement được hỗ trợ bởi React, sẽ như sau:

var boldElement = React.createElement('b');

Mặc dù bạn đã khởi tạo, song nó là Virtual DOM nên sẽ không hiển thị cho tới khi bạn render nó vào trong cây DOM.

Render ReactElement

Để render element này vào cây DOM thực sự, bạn cần gọi tới phương thức ReactDOM.render(). Phương thức yêu cầu 2 tuỳ chọn: root của cây DOM ảo và nơi sẽ đặt các thành phần này vào.

Trong trường hợp hiện tại, chúng ta có sẵn <div> với idroot đã khởi tạo trong thẻ <body>, vì vậy chúng ta có thể xác định các thành phần như sau:

// Vanilla Javascript
var mountElement = document.getElementById('root');
// hoặc
var mountElement = document.querySelector('#root');
// jQuery
var mountElement = $('#root');

Với element đã lấy ở trên, ta có thể set React render:

var boldElement = React.createElement('b');
var mountElement = document.querySelector('#root');
ReactDOM.render(boldElement, mountElement);

Tất nhiên, mặc dù DOM đã hiển thị trong trình duyệt nhưng vẫn chưa có nội dung text nào hiện ra.

Thêm Text (với lớp con)

Như ở trên, React.createElement chỉ mới có 1 tuỳ chọn (chính là ‘b’ để tạo ra <b> tag). Tuy nhiên, React.createElement có thể chấp nhận tới 3 tuỳ chọn lần lượt là:

  1. Loại của DOM element (như thẻ H2, H3, strong)
  2. Trạng thái của element (props)
  3. Lớp đối tượng con (children)

Chúng ta sẽ tìm hiểu props sau, nên ta tạm set về null trong trường hợp này.

Lớp đối tượng con phải là đối tượng của ReactNode object, có thể là:

  1. ReactElement
  2. Một số hoặc giá trị (như ReactText)
  3. Một array của ReactNodes

Lấy ví dụ, để thêm text vào trong boldElement ta tạo ở trên, chúng ta pass giá trị vào như sau:

var boldElement = React.createElement('b', null, 'Text ví dụ');

 

Lược dịch từ FullStackReact

Viết một bình luận


Chuyên gia về Web
Bạn muốn làm việc với dịch vụ website do chúng tôi triển khai?
Gọi tư vấn 0982.90.4343
Chuyên gia về Web
Bài viết liên quan

07/04/2024

PHP: Format date dd/mm/yyyy và so sánh với Date hiện tại
Một vấn đề hay gặp trong quá trình xử lý PHP datetime là tình huống format date từ định dạng...

02/01/2024

Fix lỗi npm không thể cài các package devDependencies
Khi cài đặt dự án,  có lúc bạn sẽ cài mãi cũng không đủ các package npm, đặc biệt là...
Gọi file PHP trong WordPress

19/09/2023

Cài đặt và sử dụng WP-CLI trên môi trường Linux
Trên một số môi trường Hosting có thể cung cấp SSH hoặc Terminal access, song không có sẵn WP-CLI để...
Import database MySQL lớn trên môi trường Docker

06/08/2023

Import database MySQL lớn trên môi trường Docker
Mình sử dụng EasyPanel để quản lý các Docker và build môi trường app. Nay gặp tình huống phải import...