Rate this post

React là một thư viện JavaScript phổ biến được sử dụng để xây dựng giao diện người dùng. Một trong những khía cạnh quan trọng nhất của React là vòng đời (life-cycle) của các component. Hiểu rõ về vòng đời của component sẽ giúp bạn tối ưu hóa hiệu suất, quản lý trạng thái và xử lý các sự kiện một cách hiệu quả. Bài viết này sẽ cung cấp cho bạn cái nhìn chi tiết về vòng đời của React component và các phương thức tương ứng.

Vòng Đời của React Component

Vòng đời của một React component bao gồm ba giai đoạn chính:

  1. Mounting: Khi component được tạo và gắn vào DOM.
  2. Updating: Khi component nhận props mới hoặc trạng thái (state) thay đổi.
  3. Unmounting: Khi component bị xóa khỏi DOM.

Mỗi giai đoạn đều có các phương thức vòng đời (lifecycle methods) tương ứng mà bạn có thể sử dụng để quản lý và tối ưu hóa component.

Mounting

Mounting là giai đoạn khi một component được tạo và gắn vào DOM. Các phương thức vòng đời trong giai đoạn này bao gồm:

Constructor

constructor(props) là phương thức được gọi đầu tiên khi một instance của component được tạo ra. Đây là nơi thích hợp để khởi tạo trạng thái (state) và ràng buộc các phương thức của component.

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      // khởi tạo state
    };
    // ràng buộc phương thức
  }
}

getDerivedStateFromProps

static getDerivedStateFromProps(props, state) được gọi ngay trước khi render. Phương thức này cho phép bạn cập nhật trạng thái dựa trên sự thay đổi của props.

static getDerivedStateFromProps(nextProps, prevState) {
  if (nextProps.someValue !== prevState.someValue) {
    return {
      someValue: nextProps.someValue
    };
  }
  return null;
}

render

render() là phương thức bắt buộc trong mỗi component. Phương thức này trả về phần tử React đại diện cho UI của component.

render() {
  return (
    <div>
      Hello, world!
    </div>
  );
}

componentDidMount

componentDidMount() được gọi ngay sau khi component được gắn vào DOM. Đây là nơi thích hợp để thực hiện các thao tác bất đồng bộ như gọi API hoặc thiết lập các subscription.

componentDidMount() {
  // gọi API hoặc thiết lập subscription
}

Updating

Updating là giai đoạn khi một component nhận props mới hoặc trạng thái thay đổi. Các phương thức vòng đời trong giai đoạn này bao gồm:

getDerivedStateFromProps

getDerivedStateFromProps cũng được gọi trong giai đoạn này nếu component nhận props mới.

shouldComponentUpdate

shouldComponentUpdate(nextProps, nextState) cho phép bạn kiểm soát việc render lại component. Phương thức này nên trả về true hoặc false tùy thuộc vào việc bạn có muốn component được render lại hay không.

shouldComponentUpdate(nextProps, nextState) {
  // logic để quyết định có render lại hay không
  return true;
}

render

render() được gọi lại khi trạng thái hoặc props thay đổi.

getSnapshotBeforeUpdate

getSnapshotBeforeUpdate(prevProps, prevState) được gọi ngay trước khi các thay đổi DOM được phản ánh. Phương thức này trả về một giá trị sẽ được chuyển tiếp đến componentDidUpdate.

getSnapshotBeforeUpdate(prevProps, prevState) {
  // trả về giá trị để chuyển tiếp đến componentDidUpdate
  return null;
}

componentDidUpdate

componentDidUpdate(prevProps, prevState, snapshot) được gọi ngay sau khi component được cập nhật. Đây là nơi thích hợp để thực hiện các tác vụ dựa trên sự thay đổi của DOM.

componentDidUpdate(prevProps, prevState, snapshot) {
  // thực hiện các tác vụ sau khi DOM cập nhật
}

Unmounting

Unmounting là giai đoạn khi một component bị xóa khỏi DOM. Phương thức vòng đời trong giai đoạn này bao gồm:

componentWillUnmount

componentWillUnmount() được gọi ngay trước khi component bị xóa khỏi DOM. Đây là nơi thích hợp để hủy bỏ các subscription và xóa các tài nguyên để tránh rò rỉ bộ nhớ.

componentWillUnmount() {
  // hủy bỏ subscription và xóa các tài nguyên
}

Các Phương Thức Khác

componentDidCatch

componentDidCatch(error, info) được gọi khi có lỗi xảy ra trong quá trình render, trong phương thức lifecycle hoặc trong các constructor của bất kỳ component con nào. Phương thức này cho phép bạn xử lý các lỗi và hiển thị fallback UI.

componentDidCatch(error, info) {
  // xử lý lỗi và hiển thị UI thay thế
}

Kết Luận

Hiểu rõ vòng đời của React component là rất quan trọng để xây dựng các ứng dụng React hiệu quả và tối ưu hóa hiệu suất. Bằng cách nắm vững các phương thức vòng đời và biết khi nào sử dụng chúng, bạn có thể quản lý trạng thái, xử lý các sự kiện và tối ưu hóa trải nghiệm người dùng một cách tốt nhất. Hãy thử áp dụng những kiến thức này vào các dự án React của bạn để thấy được sự khác biệt.

Tham Khảo

  1. React Official Documentation
  2. MDN Web Docs on React
  3. Stack Overflow on React Lifecycle Methods
  4. FreeCodeCamp on React Lifecycle Methods
  5. Blog Posts and Tutorials on Medium

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now