Khám phá quản lý trạng thái trong React bằng Jotai: Hướng dẫn thực hành
Quản lý trạng thái trong các dự án quy mô nhỏ thường đơn giản bằng cách sử dụng các móc và đạo cụ React. Tuy nhiên, khi ứng dụng phát triển và nhu cầu chia sẻ và truy cập dữ liệu giữa các thành phần khác nhau phát sinh, điều này thường dẫn đến việc khoan chống đỡ. Thật không may, việc khoan chống đỡ có thể nhanh chóng làm lộn xộn cơ sở mã và đưa ra các thách thức về khả năng mở rộng.
Mặc dù Redux cung cấp một giải pháp quản lý trạng thái tuyệt vời, API của nó có thể áp đảo đối với các dự án tương đối nhỏ. Ngược lại, Jotai, một thư viện quản lý trạng thái tối thiểu tận dụng các đơn vị trạng thái độc lập được gọi là nguyên tử để quản lý trạng thái, loại bỏ các thách thức như khoan chống và cho phép tiếp cận quản lý trạng thái đơn giản và có thể mở rộng hơn.
Mục Lục
Jotai là gì và nó hoạt động như thế nào?
Jotai là một thư viện quản lý trạng thái cung cấp giải pháp quản lý trạng thái đơn giản trái ngược với các giải pháp thay thế phức tạp hơn như Redux. Nó sử dụng các đơn vị trạng thái độc lập được gọi là các nguyên tử để quản lý trạng thái trong ứng dụng React.
Lý tưởng nhất là các thành phần khác nhau trong ứng dụng, truy cập và cập nhật các nguyên tử này bằng cách sử dụng móc do Jotai cung cấp có tên là sử dụngAtom. Đây là một ví dụ đơn giản về cách tạo nguyên tử Jotai:
import { atom } from 'jotai';
const countAtom = atom(1);
Để truy cập và làm việc với các nguyên tử trong Jotai, bạn chỉ cần sử dụng sử dụngAtom hook, giống như các hook React khác, cho phép bạn truy cập và cập nhật giá trị của một trạng thái trong một thành phần chức năng.
Đây là một ví dụ để chứng minh việc sử dụng nó:
import { useAtom } from 'jotai';const countAtom = atom(1);
function MyComponent() {
const [count, setCount] = useAtom(countAtom);
const increment = () => setCount((prevCount) => prevCount + 1);
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
);
}
Trong ví dụ này, các sử dụngAtom móc được sử dụng để truy cập đếmAtom nguyên tử và giá trị liên quan của nó. Các đặtCount được sử dụng để cập nhật giá trị của nguyên tử và mọi thành phần liên quan sẽ được tự động hiển thị lại với giá trị được cập nhật.
Bằng cách chỉ kích hoạt các thành phần bị ảnh hưởng, nó sẽ giảm số lần hiển thị lại không cần thiết trên ứng dụng. Cách tiếp cận được nhắm mục tiêu này để kết xuất lại nâng cao hiệu suất tổng thể của ứng dụng.
Với những kiến thức cơ bản đã sẵn sàng, hãy xây dựng một ứng dụng To-do React đơn giản để hiểu rõ hơn về khả năng quản lý trạng thái của Jotai.
Quản lý trạng thái trong React bằng Jotai
Để bắt đầu, hãy tạo một ứng dụng React. Ngoài ra, bạn có thể sử dụng Vite để thiết lập dự án React. Sau khi bạn xây dựng một ứng dụng React cơ bản, hãy tiếp tục và cài đặt Jotai trong ứng dụng của bạn.
npm install jotai
Tiếp theo, để sử dụng Jotai trong ứng dụng của bạn, bạn cần bọc toàn bộ ứng dụng của mình bằng Các nhà cung cấp thành phần. Thành phần này chứa cửa hàng đóng vai trò là trung tâm trung tâm để cung cấp các giá trị nguyên tử trong toàn bộ ứng dụng.
Ngoài ra, nó cho phép bạn khai báo trạng thái ban đầu của các nguyên tử. Bằng cách gói ứng dụng của bạn với Các nhà cung cấptất cả các thành phần trong ứng dụng đều có quyền truy cập vào các nguyên tử mà bạn đã xác định và sau đó, chúng có thể tương tác và cập nhật trạng thái thông qua sử dụngAtom cái móc.
import { Provider } from "jotai";
Bây giờ bọc ứng dụng trong index.js hoặc chính.jsx như hình bên dưới.
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import { Provider } from "jotai";ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<Provider>
<App />
</Provider>
</React.StrictMode>,
)
Định cấu hình kho lưu trữ dữ liệu
Cửa hàng hoạt động như một kho lưu trữ trung tâm cho trạng thái của ứng dụng. Nó thường chứa định nghĩa về các nguyên tử, bộ chọn và bất kỳ chức năng liên quan nào khác được yêu cầu để quản lý trạng thái bằng Jotai.
Trong trường hợp này, nó quản lý các nguyên tử để quản lý danh sách các mục cho ứng dụng Việc cần làm. bên trong src thư mục, tạo TodoStore.jsx tệp và thêm mã bên dưới.
import { atom } from "jotai";
export const TodosAtom = atom([]);
Bằng cách tạo và xuất các TodosAtombạn có thể thoải mái tương tác và cập nhật trạng thái việc cần làm trên các thành phần khác nhau trong ứng dụng.
Triển khai chức năng ứng dụng To-Do
Bây giờ bạn đã định cấu hình Jotai trong ứng dụng React và tạo một nguyên tử để quản lý trạng thái của ứng dụng, hãy tiếp tục và tạo một thành phần công việc đơn giản sẽ xử lý các chức năng thêm, xóa và chỉnh sửa cho các mục công việc.
Tạo một cái mới thành phần/Todo.jsx tập tin trong src danh mục. Trong tệp này, thêm mã dưới đây:
- Nhập kho lưu trữ dữ liệu và sử dụngAtom cái móc.
import React, { useState } from 'react';
import { TodosAtom } from '../TodoStore';
import { useAtom } from 'jotai'; - Tạo thành phần chức năng và thêm các phần tử JSX.
const Todo = () => {
return (
<div>
<input
placeholder="New todo"
value={value}
onChange={event => setValue(event.target.value)}
/>
<button onClick={handleAdd}>Add Todo</button>
<ul>
{todos.map(todo => (
<li key={todo.id}>
{todo.text}
<button onClick={() => handleDelete(todo.id)}>Delete</button>
</li>
))}
</ul>
</div>
);
};export default Todo;
Thành phần này hiển thị giao diện người dùng đơn giản để quản lý danh sách các mục việc cần làm.
- Cuối cùng, thực hiện các chức năng thêm và xóa việc cần làm.
const [value, setValue] = useState('');
const [todos, setTodos] = useAtom(TodosAtom);const handleAdd = () => {
if (value.trim() !== '') {
setTodos(prevTodos => [
...prevTodos,
{
id: Date.now(),
text: value
},
]);
setValue('');
}
};const handleDelete = id => {
setTodos(prevTodos => prevTodos.filter(todo => todo.id !== id));
};
Các xử lýThêm chức năng chịu trách nhiệm thêm một mục việc cần làm mới vào danh sách các mục. Đầu tiên, nó kiểm tra xem giá trị của biến có trống không. Sau đó, nó tạo một mục việc cần làm mới với một ID duy nhất và mục việc cần làm đã nhập làm nội dung của nó.
Các setTodos sau đó, chức năng được gọi để cập nhật danh sách các mục việc cần làm trong nguyên tử bằng cách nối thêm mục mới. Cuối cùng, giá trị trạng thái được đặt lại thành một chuỗi trống sau thao tác bổ sung.
Mặt khác, các xử lýXóa chức năng chịu trách nhiệm xóa một mục việc cần làm khỏi danh sách. Nó lọc ra mục việc cần làm bằng cách sử dụng ID đã chỉ định từ danh sách hiện có bằng cách sử dụng trướcTodos.filter phương pháp. Sau đó, nó cập nhật danh sách bằng cách sử dụng setTodos chức năng—xóa mục việc cần làm đã chỉ định khỏi danh sách một cách hiệu quả.
Sử dụng Jotai để quản lý trạng thái trong ứng dụng React
Hướng dẫn này đã giới thiệu về cách sử dụng Jotai như một giải pháp quản lý nhà nước. Tuy nhiên, có những tính năng tuyệt vời khác như khả năng tạo các nguyên tử không đồng bộ được thiết kế đặc biệt để quản lý trạng thái liên quan đến các hoạt động không đồng bộ như lệnh gọi API.
Ngoài ra, bạn cũng có thể tạo các nguyên tử dẫn xuất, được sử dụng để tính toán và lấy các giá trị từ các nguyên tử hiện có, cho phép bạn quản lý các trạng thái phức tạp dựa trên các phần khác của ứng dụng.
Bằng cách tận dụng các tính năng quản lý trạng thái này, bạn có thể tạo các ứng dụng React mạnh mẽ hơn và có khả năng mở rộng hơn.