0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Hướng Dẫn Quản Lý Global State trong React với Thư Viện React Signify

Đăng vào 3 tuần trước

• 4 phút đọc

Giới thiệu

Xin chào các bạn! Nếu bạn đang phân vân không biết nên chọn thư viện nào để quản lý Global State trong ReactJS và đang lo lắng về vấn đề re-render cũng như hiệu suất ứng dụng, thì bài viết này chính là dành cho bạn.

Hôm nay, mình sẽ giới thiệu một thư viện rất hữu ích cho việc quản lý Global State trong React có tên là React Signify. Mình đã sử dụng thư viện này trong nhiều dự án và muốn chia sẻ để cộng đồng ReactJS cùng khám phá.

Tại Sao Nên Chọn React Signify?

React Signify là một thư viện nhỏ gọn nhưng mạnh mẽ, cung cấp các công cụ mạnh mẽ để quản lý và cập nhật global state một cách hiệu quả. Thư viện này đặc biệt phù hợp cho các ứng dụng React, giúp bạn đồng bộ hóa các giá trị khi chúng thay đổi. Một số ưu điểm nổi bật của React Signify bao gồm:

  • Thư viện nhẹ và dễ dàng tích hợp.
  • Cú pháp dễ hiểu, giúp bạn nhanh chóng làm quen.
  • Quản lý re-render hiệu quả: Đây là một điểm mình đánh giá cao!

Thông Tin Dự Án

Cài Đặt

Để cài đặt React Signify, bạn chỉ cần sử dụng NPM hoặc Yarn như sau:

Copy
npm install react-signify  // Sử dụng NPM

yarn add react-signify      // Sử dụng Yarn

Tổng Quan

Khởi Tạo

Bạn có thể khởi tạo Signify ở bất kỳ file nào trong dự án của bạn. Dưới đây là một ví dụ:

Copy
import { signify } from 'react-signify';

const sCount = signify(0);

Tại đây, chúng ta đã tạo một biến sCount với giá trị khởi tạo là 0.

Sử Dụng Ở Nhiều Nơi

Việc sử dụng Signify rất đơn giản nhờ vào module export/import. Dưới đây là ví dụ:

Component A (xuất Signify)

Copy
import { signify } from 'react-signify';

export const sCount = signify(0);

export default function ComponentA() {
  return (
    <div>
      <h1>{sCount.html}</h1>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP</button>
    </div>
  );
}

Component B (nhập Signify)

Copy
import { sCount } from './ComponentA';

export default function ComponentB() {
  return (
    <div>
      <h1>{sCount.html}</h1>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP</button>
    </div>
  );
}

Bạn có thể thấy rằng Signify rất dễ sử dụng và linh hoạt.

Các Tính Năng Cơ Bản

Hiển Thị Giá Trị

Chúng ta có thể sử dụng thuộc tính html để hiển thị giá trị lên giao diện:

Copy
import { signify } from 'react-signify';

const sCount = signify(0);

export default function App() {
  return (
    <div>
      <h1>{sCount.html}</h1>
    </div>
  );
}

Cập Nhật Giá Trị

Copy
import { signify } from 'react-signify';

const sCount = signify(0);

export default function App() {
  return (
    <div>
      <h1>{sCount.html}</h1>
      <button onClick={() => sCount.set(1)}>Set 1</button>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP 1</button>
    </div>
  );
}

Mỗi lần nhấn nút sẽ thay đổi giá trị của Signify và cập nhật tức thì lên giao diện.

Các Tính Năng Nâng Cao

Use

Tính năng này cho phép bạn lấy giá trị của Signify và sử dụng nó như một state của component:

Copy
import { useEffect } from 'react';
import { signify } from 'react-signify';

const sCount = signify(0);

export default function App() {
  const countValue = sCount.use();

  useEffect(() => {
    console.log(countValue);
  }, [countValue]);

  return (
    <div>
      <h1>{countValue}</h1>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP</button>
    </div>
  );
}

Watch

Cho phép theo dõi sự thay đổi giá trị của Signify mà không làm component re-render:

Copy
import { signify } from 'react-signify';

const sCount = signify(0);

export default function App() {
  sCount.watch((newValue) => {
    console.log(newValue);
  }, []);
  return (
    <div>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP</button>
    </div>
  );
}

Wrap

Áp dụng giá trị của Signify trong một vùng giao diện cụ thể:

Copy
import { signify } from 'react-signify';

const sCount = signify(0);

export default function App() {
  return (
    <div>
      <sCount.Wrap>
        {(value) => <h1>{value}</h1>}
      </sCount.Wrap>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP</button>
    </div>
  );
}

Hardwrap

Giúp hạn chế các re-render không cần thiết:

Copy
import { signify } from 'react-signify';

const sCount = signify(0);

export default function App() {
  return (
    <div>
      <sCount.HardWrap>
        {(value) => <h1>{value}</h1>}
      </sCount.HardWrap>
      <button onClick={() => sCount.set((pre) => pre.value += 1)}>UP</button>
    </div>
  );
}

Reset

Khôi phục giá trị mặc định:

Copy
import { signify } from 'react-signify';

const sCount = signify(0);
sCount.reset();

Kết Luận

Sau một thời gian trải nghiệm với React Signify trong các dự án lớn nhỏ, mình đánh giá thư viện này rất dễ sử dụng và bảo trì. Đặc biệt, với devtool, việc kiểm soát các giá trị khi thay đổi trở nên dễ dàng. Thư viện này giúp mình điều chỉnh và tối ưu hóa hiệu suất ứng dụng một cách hiệu quả.

Hy vọng bạn sẽ trải nghiệm và có những cảm nhận giống như mình khi sử dụng React Signify!

Xem Thêm

Đừng quên ghé thăm trang chủ của Signify để tìm hiểu thêm về:

  • Tài liệu API
  • Render & Update
  • Devtool
  • Hướng dẫn sử dụng
  • Cấu trúc
  • Hiểu biết về Signify.
    source: viblo
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào