Professional Documents
Culture Documents
Component
K/n: Một ứng dụng bao gồm các thành phần mà chúng ta có thể đặt vào 1 khối chung, các
khối này được gọi là components. Các components này hoạt động một cách độc lập và khi
kết hợp chúng lại thì sẽ được một ứng dụng hoàn chỉnh. Trong một components có thể
chứa nhiều components khác.
Ví dụ về một trang web hoàn chỉnh:
Đặc điểm:
- Tách biệt Logic và Giao Diện: Components được thiết kế để tách biệt logic và giao diện
của ứng dụng tức là có thể phát triển và duy trì logic ứng dụng riêng rẽ khỏi giao
diện người dùng và ngược lại. Điều này giúp quản lý mã nguồn của ứng dụng
- Tái Sử Dụng: Do là các component riêng lẻ nên các components này có thể tái sử
dụng ở những phần khác nhau của ứng dụng hoặc thậm chí trong các ứng dụng
khác.
- Thiết Kế Modularity: Components thường được thiết kế theo cách modularity, tức là
chúng thực hiện một chức năng cụ thể và độc lập. Điều này giúp tạo ra mã nguồn dễ
đọc và dễ bảo trì, phát triển hơn.
- Kết Hợp: Các components có thể kết hợp lại với nhau để tạo thành ứng dụng hoặc
trang web hoàn chỉnh. Chúng có thể gửi và nhận dữ liệu qua giao diện, tạo sự tương
tác và hoạt động của ứng dụng.
- Các Loại Components: Có nhiều loại components khác nhau tùy thuộc vào ngôn ngữ
lập trình và framework sử dụng.
Trong React có một số tiêu chí để có thể chia một ứng dụng thành các components:
- Dựa vào chức năng: Chia components dựa trên chức năng cụ thể mà chúng thực hiện
trong ứng dụng. VD: có thể có các components cho đăng nhập, hiển thị danh sách
sản phẩm, quản lý giỏ hàng, và thanh toán trong một ứng dụng mua sắm trực tuyến.
- Dựa vào giao diện người dùng: Chia components dựa trên các phần giao diện người
dùng cụ thể. VD: có thể có components cho các nút bấm, ô văn bản, hộp thoại,
thanh trượt, và các component giao diện khác.
- Phạm vi (Scope): Tùy thuộc vào phạm vi của components trong ứng dụng, có thể chia
thành các components cho trang chính, các trang con, phần tiêu đề, chân trang,
hoặc các khu vực chức năng cụ thể.
- Tái sử dụng: Chia components dựa trên khả năng tái sử dụng của chúng. Có các
components tổng quát có thể được sử dụng lại trong nhiều phần khác nhau của ứng
dụng và các components cụ thể cho một mục đích cụ thể.
- Layout và Container: Một cách phổ biến để chia components trong React là sử dụng
mô hình "Layout và Container." Components layout quản lý cách giao diện được sắp
xếp, trong khi các components container quản lý trạng thái và logic.
=> Cách chia components trong React phụ thuộc vào cấu trúc tổ chức của ứng dụng và
mục tiêu thiết kế. Quan trọng là làm cho mã nguồn dễ hiểu, bảo trì và mở rộng.
Trong React, có hai loại components chính là functional components (components dựa
trên hàm) và class components (components dựa trên lớp).
- Functional components: đơn giản là các hàm javascript. Các hàm này có thể nhận
hoặc không nhận dữ liệu dưới dạng tham số. Chúng ta có thể tạo một hàm lấy
props(properties) làm đầu vào và trả về những gì sẽ được hiển thị. Một component
chức năng hợp lệ có thể được hiển thị trong ví dụ dưới đây. VD:
Component này nhận các props làm đối số và sử dụng chúng để hiển thị thông tin
trên giao diện người dùng.Ưu điểm của functional components bao gồm:cú pháp
ngắn gọn hơn so với class components, hiệu suất tốt hơn so với class components
vì không cần quản lý trạng thái và không có overhead từ các phương thức như
render và componentDidUpdate.
- Class components: là một loại component được định nghĩa bằng cách sử dụng lớp
(class) JavaScript. Class components có thể duy trì trạng thái (state) và có thể chứa
các phương thức (methods) khác nhau để xử lý logic của component. Điểm quan
trọng của class components là chúng phải kế thừa từ lớp React.Component hoặc
React.PureComponent. VD:
Rendering Components in ReactJS: là quá trình tạo ra và hiển thị giao diện người dùng dựa
trên cấu trúc cây thành phần đã định nghĩa trong ứng dụng. Để hiển thị (render) các
components trong ReactJS, cần thực hiện một số bước cơ bản:
- Tạo components: Đầu tiên, cần định nghĩa các components muốn hiển thị.
Có thể khởi tạo 1 components bằng câu lệnh:
- Import các thư viện cần thiết vào têp JS. VD:
- Sử dụng JSX để định nghĩa giao diện người dùng trong các components.
- Render components trong ứng dụng: Sử dụng ReactDOM.render() để import
component gốc vào DOM. Component gốc thường là một functional hoặc
class component bao gồm tất cả các components muốn hiển thị trong ứng
dụng.VD:
Gọi ReactDOM.render() làm tham số đầu tiên, sau đó gọi components Welcome, trả về
<h1>Hello World!</h1>; như kết quả. Sau đó, ReactDOM cập nhật DOM một cách hiệu quả
để khớp với phần tử được trả về và hiển thị phần tử đó thành phần tử DOM có id là “root”.
2. State
K/n: State là một đối tượng JavaScript dùng để lưu trữ và quản lý dữ liệu và thông tin của
một component. Nó cho phép cập nhật và theo dõi sự thay đổi của dữ liệu trong ứng dụng
và tự động cập nhật giao diện người dùng khi dữ liệu thay đổi. Sự thay đổi trong trạng thái
có thể xảy ra do các action mà người dùng thực hiện hoặc các sự kiện do hệ thống tạo ra,
và những thay đổi này xác định cách hoạt động của components và cách nó sẽ hiển thị. Một
State có thể chứa nhiều thuộc tính của Object.
Trạng thái có thể được truyền dưới dạng props từ component cha xuống các component
con.
Cách sử dụng:
- Khởi tạo:
+ Functional component: State được khởi tạo thông qua hook useState trong
functional component:
+ class component : State được khởi tạo bên trong constructor của class
component
- Tham chiếu:
+ Functional component: Tham chiếu đến State Object sử dụng biến được trả
về bởi hook useState trong functional component
+ Class component: Tham chiếu đến state Object ở bất kỳ đâu trong
component bằng cách sử dụng cú pháp this.state.xxx trong class component
+ Class component: Để cập nhật giá trị của State cần sử dụng phương thức
setState trong class component
3. Props
K/n: Props (viết tắt của "properties") trong React là một cách để truyền dữ liệu từ
component cha (parent component) đến component con (child component) giúp tái sử dụng
components và làm cho các component của ứng dụng trở nên độc lập và có thể tương tác
với nhau.. Props là một trong những cơ chế quan trọng giúp truyền thông tin giữa các
component.
Đặc điểm:
- Props là không thể thay đổi (immutable), nghĩa là một khi đã truyền giá trị vào props
của một component con thì không thể thay đổi giá trị đó từ component con. Điều này
giúp duy trì tính nguyên vẹn của dữ liệu và làm cho ứng dụng dễ dàng để debug.
- Props có thể là các giá trị động được tính toán hoặc thay đổi theo thời gian, chẳng
hạn như trạng thái của component cha.
- Props được truyền vào các component thông qua các thuộc tính HTML.
Sử dụng:
- Dùng Props Trong Component Con: Để sử dụng props trong một component con
cần tham chiếu đến props bằng cách sử dụng ‘this.props’ trong class component
hoặc tham số của hàm trong functional component.
- Truyền Props: Để truyền props từ component cha đến component con cần bao gồm
tên prop và giá trị của nó trong cú pháp JSX của component cha.
- Default Props: Định nghĩa giá trị mặc định cho props trong trường hợp không có giá
trị props nào được truyền từ component cha.
- Children Props: Có thể truyền component con (children components) vào component
cha và truy cập chúng bằng props đặc biệt là ‘children’.