Lifecycle
Lifecycle (Vòng đời) của Component trong React (Trước và sau phiên bản 16.3)
Trước phiên bản React 16.3:
Vòng đời của component React trước phiên bản 16.3 bao gồm các phương thức sau:
1. Initializing (Khởi tạo):
constructor(props): Khởi tạo state và props cho component.
2. Mounting (Lắp đặt):
componentWillMount(): Được gọi trước khi component được render lần đầu tiên.componentDidMount(): Được gọi sau khi component được render lần đầu tiên.
3. Updating (Cập nhật):
componentWillUpdate(nextProps, nextState): Được gọi trước khi component được render lại do state hoặc props thay đổi.shouldComponentUpdate(nextProps, nextState): Xác định xem component có cần được render lại hay không.componentDidUpdate(prevProps, prevState): Được gọi sau khi component được render lại.
4. Unmounting (Gỡ cài đặt):
componentWillUnmount(): Được gọi trước khi component bị gỡ khỏi DOM.
Sử dụng:
Các phương thức
componentWillMount(),componentDidMount(),componentWillUnmount()thường được sử dụng để thực hiện các tác vụ như:Kết nối với API
Thiết lập sự kiện
Khởi tạo timer
Các phương thức
componentWillUpdate(),shouldComponentUpdate(),componentDidUpdate()thường được sử dụng để tối ưu hóa hiệu suất render bằng cách:Kiểm tra xem component có cần được render lại hay không
Cập nhật state hoặc props của component
Lưu ý:
Trình tự gọi các phương thức lifecycle được cố định.
Các phương thức lifecycle có thể bị null hoặc không được sử dụng.
Sau phiên bản React 16.3:
Giới thiệu các phương thức lifecycle mới:
static getDerivedStateFromProps(nextProps, prevState): Cập nhật state dựa trên props mới.getSnapshotBeforeUpdate(prevProps, prevState): Chụp ảnh nhanh của DOM trước khi render lại.
Thay đổi:
Các phương thức
componentWillMount(),componentWillUnmount()đã bị loại bỏ.Các phương thức
componentWillUpdate(),componentDidUpdate()được thay thế bởigetSnapshotBeforeUpdate(),componentDidUpdate().Giới thiệu hook
useEffect()để thay thế cho một số trường hợp sử dụng của các phương thức lifecycle cũ.
Sử dụng:
Hook
useEffect()được sử dụng để thực hiện các tác vụ phụ thuộc vào lifecycle như:Kết nối với API
Thiết lập sự kiện
Khởi tạo timer
Dọn dẹp tài nguyên
Các phương thức lifecycle mới ít được sử dụng hơn so với các phương thức lifecycle cũ.
Lợi ích:
Việc sử dụng hook
useEffect()giúp code dễ đọc và dễ bảo trì hơn.Cải thiện hiệu suất render do hook
useEffect()chỉ được gọi khi cần thiết.
So sánh lifecycle cũ và mới:
constructor(props)
Tất cả
Khởi tạo state và props
componentWillMount()
< 16.3
Thực hiện các tác vụ trước khi render
componentDidMount()
Tất cả
Thực hiện các tác vụ sau khi render
componentWillUpdate(nextProps, nextState)
< 16.3
Kiểm tra trước khi render lại
shouldComponentUpdate(nextProps, nextState)
< 16.3
Tối ưu hóa hiệu suất render
componentDidUpdate(prevProps, prevState)
Tất cả
Thực hiện các tác vụ sau khi render lại
componentWillUnmount()
< 16.3
Dọn dẹp tài nguyên trước khi gỡ cài đặt
static getDerivedStateFromProps(nextProps, prevState)
>= 16.3
Cập nhật state dựa trên props mới
getSnapshotBeforeUpdate(prevProps, prevState)
>= 16.3
Chụp ảnh nhanh của DOM trước khi render lại
useEffect()
>= 16.3
Thay thế cho một số trường hợp sử dụng lifecycle cũ
drive_spreadsheetXuất sang Trang tính
Kết luận:
Vòng đời của component React đã thay đổi đáng kể sau phiên bản 16.3. Việc sử dụng hook useEffect() và các phương thức lifecycle mới giúp code dễ đọc, dễ bảo trì và cải thiện
Last updated