Trong bài trước, chúng ta đã tìm hiểu cách Fluxor hoạt động trong môi trường Console. Tuy nhiên, sức mạnh thực sự của mô hình Flux (Redux) chỉ tỏa sáng rực rỡ khi đối mặt với sự phức tạp của UI. Hôm nay, mình sẽ hướng dẫn các bạn tích hợp Fluxor vào Blazor Server để giải quyết bài toán truyền dữ liệu giữa các Component mà không cần dùng đến "chuỗi sự kiện" (Event Callback) rắc rối. Trước khi đi vào chi tiết, mình sẽ nói sơ về ví dụ. Hãy tưởng tượng bạn đang xây dựng một tính năng nhỏ cho phép người dùng quản lý danh sách sách cần đọc. Các thao tác cơ bản bao gồm: Thêm sách: Nhập tên sách và nhấn nút, hệ thống giả lập lưu vào Database (mất khoảng 1 giây) rồi hiển thị lên danh sách. Xóa sách: Nhấn nút xóa bên cạnh mỗi đầu sách để loại bỏ khỏi danh sách. 1. Cài đặt Cài đặt Fluxor dotnet add package Fluxor.Blazor.Web Đăng ký dịch vụ trong Program.cs Thay vì đăng ký thủ công từng thành phần, Fluxor cung cấp khả năng tự động quét (Scan) toàn bộ dự án: builder.Services.A...
Hãy tưởng tượng người dùng đang lọc danh sách sản phẩm đến trang số 10, click vào xem chi tiết, sau đó nhấn Back quay lại mà bảng lại reset về trang 1 và mất sạch bộ lọc. Cảm giác đó thật sự "tệ". State Saving sinh ra để giải quyết vấn đề này bằng cách ghi nhớ trạng thái bảng vào trình duyệt. 1. Cách kích hoạt cơ bản Chỉ cần thêm thuộc tính stateSave: true vào cấu hình khởi tạo. Mặc định, DataTables sẽ sử dụng localStorage để lưu trữ vĩnh viễn cho đến khi xóa cache. $('#ajaxDataTable').DataTable({ stateSave: true, stateDuration: 60 * 60 * 2 // Lưu trong 2 giờ (tính bằng giây) }); 2. Xử lý logic cho Individual Column Filter (Popup Dropdown) Một vấn đề phát sinh: DataTable nhớ giá trị lọc, nhưng các thẻ UI tự chế (như icon filter tam giác) sẽ bị mất màu báo hiệu. Chúng ta cần dùng hàm state.loaded() để "nhắc" giao diện hiển thị đúng. initComplete: function () { var api = th...