העלה את רמת ניהול המצב של אפליקציית React שלך עם Jotai: אלטרנטיבה פשוטה יותר ל-Redux, ומושלמת לפרויקטים קטנים יותר!

ניהול המדינה בפרויקטים בקנה מידה קטן הוא בדרך כלל פשוט באמצעות ווים ואביזרים של React. עם זאת, ככל שהאפליקציה גדלה והצורך לשתף ולגשת לנתונים על פני רכיבים שונים, זה מוביל לעתים קרובות לקידוח אבזר. למרבה הצער, קידוח אבזר יכול לבלבל במהירות את בסיס הקוד ולהציג אתגרי מדרגיות.

בעוד Redux מציעה פתרון נהדר לניהול מצב, ה-API שלו יכול להיות מכריע עבור פרויקטים קטנים יחסית. לעומת זאת, Jotai, ספריית ניהול מדינה מינימלית הממנפת יחידות עצמאיות של מדינות הנקראות אטומים לניהול המדינה, מבטל אתגרים כמו קידוחי תמיכה ומאפשר ניהול מדינה פשוט וניתן להרחבה יותר גִישָׁה.

מה זה ג'וטאי ואיך זה עובד?

ג'וטאי היא ספריית ניהול מדינה המציעה פתרון פשוט לניהול מצב בניגוד לחלופות מורכבות יותר כמו Redux. הוא משתמש ביחידות מדינה עצמאיות הנקראות אטומים כדי לנהל מצב באפליקציית React.

באופן אידיאלי, רכיבים שונים באפליקציה, ניגשים ומעדכנים את האטומים הללו באמצעות וו שסופק על ידי Jotai הנקרא השתמש בAtom. הנה דוגמה פשוטה כיצד ליצור אטום ג'וטאי:

instagram viewer
יְבוּא { אטום } מ'ג'וטאי';
const countAtom = אטום(1);

כדי לגשת ולעבוד עם אטומים בג'וטאי, אתה יכול פשוט להשתמש השתמש בAtom וו אשר, כמו אחרים ווי תגובה, מאפשר לך לגשת ולעדכן את הערך של מצב בתוך רכיב פונקציונלי.

הנה דוגמה להדגמת השימוש בו:

יְבוּא { useAtom } מ'ג'וטאי';

const countAtom = אטום(1);

פוּנקצִיָהMyComponent() {
const [count, setCount] = useAtom (countAtom);
const תוספת = () => setCount((prevCount) => prevCount + 1);
לַחֲזוֹר (


ספירה: {count}</p>

בדוגמה זו, ה השתמש בAtom הוו משמש לגישה ל countAtom האטום והערך המשויך לו. ה setCount הפונקציה משמשת לעדכון הערך של האטום וכל הרכיבים המשויכים יעובדו מחדש אוטומטית עם הערך המעודכן.

על ידי הפעלת הרכיבים המושפעים בלבד, זה מפחית רינדור מיותר בכל האפליקציה. גישה ממוקדת זו לעיבוד מחדש משפרת את הביצועים הכוללים של האפליקציה.

עם היסודות מחוץ לדרך, בואו נבנה אפליקציית To-do React פשוטה כדי להבין טוב יותר את יכולות ניהול המדינה של Jotai.

אתה יכול למצוא את קוד המקור של הפרויקט הזה בזה מאגר GitHub.

ניהול המדינה בתגובה באמצעות ג'וטאי

להתחיל, ליצור אפליקציית React. לחילופין, אתה יכול השתמש ב-Vite כדי להגדיר פרויקט React. לאחר פיגום אפליקציית React בסיסית, קדימה להתקין את Jotai באפליקציה שלך.

npm להתקין את jotai

לאחר מכן, כדי להשתמש ב-Jotai באפליקציה שלך, עליך לעטוף את כל האפליקציה שלך ב- ספק רְכִיב. רכיב זה מכיל את החנות המשמשת כרכזת מרכזית לאספקת ערכי אטום בכל היישום.

בנוסף, זה מאפשר לך להכריז על המצב ההתחלתי של אטומים. על ידי עטיפת האפליקציה שלך ב- ספק, כל הרכיבים באפליקציה מקבלים גישה לאטומים שהגדרת, ואז הם יכולים לקיים אינטראקציה עם ולעדכן את המצב באמצעות השתמש בAtom וו.

יְבוּא { ספק } מ"ג'וטאי";

כעת עטפו את האפליקציה ב- index.js אוֹ main.jsx כפי שמוצג מטה.

יְבוּא לְהָגִיב מ'לְהָגִיב'
יְבוּא ReactDOM מ'react-dom/client'
יְבוּא אפליקציה מ'./App.jsx'
יְבוּא'./index.css'
יְבוּא { ספק } מ"ג'וטאי";

ReactDOM.createRoot(מסמך.getElementById('שורש')).לְדַקלֵם(



</Provider>
</React.StrictMode>,
)

הגדר מאגר נתונים

החנות פועלת כמאגר מרכזי עבור מצב האפליקציה. הוא מכיל בדרך כלל את ההגדרה של אטומים, בוררים וכל פונקציה קשורה אחרת הנדרשת לניהול המדינה באמצעות ג'וטאי.

במקרה זה, הוא מנהל את האטומים לניהול רשימת הפריטים עבור אפליקציית המטלות. בתוך ה src ספרייה, צור TodoStore.jsx קובץ, והוסיפו את הקוד למטה.

יְבוּא { אטום } מ"ג'וטאי";
יְצוּאconst TodosAtom = atom([]);

על ידי יצירה וייצוא של TodosAtom, תוכל ליצור אינטראקציה נוחה ולעדכן את מצב המטלות על פני רכיבים שונים באפליקציה.

יישם את פונקציונליות היישום 'מטלות'

כעת לאחר שהגדרת את Jotai באפליקציית React ויצרת אטום לניהול מצב האפליקציה, עבור קדימה, וצור רכיב פשוט לביצוע שיטפל בפונקציות ההוספה, המחיקה והעריכה של המטלה פריטים.

ליצור חדש רכיבים/Todo.jsx קובץ ב- src מַדרִיך. בקובץ זה, הוסף את הקוד שלהלן:

  1. ייבא את מאגר הנתונים ואת השתמש בAtom וו.
    יְבוּא תגובה, { useState } מ'לְהָגִיב';
    יְבוּא { TodosAtom } מ'../TodoStore';
    יְבוּא { useAtom } מ'ג'וטאי';
  2. צור את הרכיב הפונקציונלי והוסף את רכיבי JSX.
    const Todo = () => {

    לַחֲזוֹר (

    מציין מיקום="מטלה חדשה"
    value={value}
    onChange={event => setValue (event.target.value)}
    />

יְצוּאבְּרִירַת מֶחדָל לעשות;

הרכיב יוצר ממשק משתמש פשוט לניהול רשימה של פריטי מטלות.
  • לבסוף, יישם את פונקציות ההוספה והמחיקה של מטלות.
    const [value, setValue] = useState('');
    const [todos, setTodos] = useAtom (TodosAtom);

    const handleAdd = () => {
    אם (value.trim() !== '') {
    setTodos(prevTodos => [
    ...prevTodos,
    {
    תְעוּדַת זֶהוּת: תַאֲרִיך.עַכשָׁיו(),
    טקסט: ערך
    },
    ]);
    הגדר ערך('');
    }
    };

    const handleDelete = תְעוּדַת זֶהוּת => {
    setTodos(prevTodos => prevTodos.filter(לעשות => todo.id !== id));
    };

  • ה handleAdd הפונקציה אחראית להוספת פריט מטלה חדש לרשימת הפריטים. ראשית, הוא בודק אם הערך של המשתנה אינו ריק. לאחר מכן הוא יוצר פריט מטלה חדש עם מזהה ייחודי והפריט שהוזן כתוכן שלו.

    ה setTodos לאחר מכן, הפונקציה נקראת כדי לעדכן את רשימת פריטי המטלות באטום על ידי הוספת הפריט החדש. לבסוף, ה ערך מצב מאופס למחרוזת ריקה לאחר פעולת ההוספה.

    מצד שני, ה handleDelete הפונקציה אחראית להסרת פריט מטלות מהרשימה. הוא מסנן את פריט המטלות באמצעות המזהה שצוין מהרשימה הקיימת על ידי שימוש ב- prevTodos.filter שיטה. לאחר מכן הוא מעדכן את הרשימה באמצעות ה setTodos פונקציה - מחיקה יעילה של פריט המטלות שצוין מהרשימה.

    שימוש ב-Jotai לניהול מצב ביישומי React

    מדריך זה סיפק מבוא לשימוש ב-Jotai כפתרון ניהול מדינה. עם זאת, ישנן תכונות נהדרות נוספות כגון היכולת ליצור אטומים אסינכרוניים שתוכננו במיוחד לניהול מצב הכולל פעולות אסינכרוניות כגון קריאות API.

    בנוסף, אתה יכול גם ליצור אטומים נגזרים, המשמשים לחישוב והפקת ערכים מאטומים קיימים, מה שמאפשר לך לנהל מצבים מורכבים בהתבסס על חלקים אחרים של היישום.

    על ידי מינוף תכונות ניהול מצב אלה, אתה יכול ליצור יישומי React חזקים וניתנים להרחבה יותר.