Αναβαθμίστε τη διαχείριση κατάστασης της εφαρμογής React με το Jotai: μια απλούστερη εναλλακτική λύση στο Redux και ιδανική για μικρότερα έργα!

Η διαχείριση της κατάστασης σε έργα μικρής κλίμακας είναι γενικά απλή, χρησιμοποιώντας γάντζους και στηρίγματα React. Ωστόσο, καθώς η εφαρμογή μεγαλώνει και προκύπτει η ανάγκη κοινής χρήσης και πρόσβασης δεδομένων σε διαφορετικά εξαρτήματα, συχνά οδηγεί σε διάτρηση στήριξης. Δυστυχώς, η γεώτρηση στηρίγματος μπορεί γρήγορα να ακαταστήσει τη βάση κώδικα και να δημιουργήσει προκλήσεις επεκτασιμότητας.

Ενώ το Redux προσφέρει μια εξαιρετική λύση διαχείρισης κατάστασης, το API του μπορεί να είναι συντριπτικό για σχετικά μικρά έργα. Αντίθετα, η Jotai, μια ελάχιστη κρατική βιβλιοθήκη διαχείρισης που αξιοποιεί ανεξάρτητες μονάδες καταστάσεων που ονομάζονται άτομα για διαχείριση κατάσταση, εξαλείφει προκλήσεις όπως η γεώτρηση στηρίγματος και επιτρέπει μια πιο απλή και επεκτάσιμη διαχείριση κατάστασης πλησιάζω.

Τι είναι το Jotai και πώς λειτουργεί;

Jotai είναι μια βιβλιοθήκη κρατικής διαχείρισης που προσφέρει μια απλή λύση διαχείρισης κατάστασης σε αντίθεση με πιο σύνθετες εναλλακτικές λύσεις όπως το Redux. Χρησιμοποιεί ανεξάρτητες μονάδες κατάστασης που ονομάζονται άτομα για τη διαχείριση της κατάστασης στην εφαρμογή React.

instagram viewer

Στην ιδανική περίπτωση, διαφορετικά στοιχεία στην εφαρμογή, έχουν πρόσβαση και ενημερώνουν αυτά τα άτομα χρησιμοποιώντας ένα άγκιστρο που παρέχεται από την Jotai που ονομάζεται useAtom. Ακολουθεί ένα απλό παράδειγμα για το πώς να δημιουργήσετε ένα άτομο Jotai:

εισαγωγή { άτομο } από'γιώται';
συνθ countAtom = άτομο(1);

Για πρόσβαση και εργασία με άτομα στο Jotai, μπορείτε απλά να χρησιμοποιήσετε useAtom αγκίστρι που όπως και άλλα React hooks, σας δίνει τη δυνατότητα πρόσβασης και ενημέρωσης της τιμής μιας κατάστασης μέσα σε ένα λειτουργικό στοιχείο.

Ακολουθεί ένα παράδειγμα για να καταδείξετε τη χρήση του:

εισαγωγή { useAtom } από'γιώται';

συνθ countAtom = άτομο(1);

λειτουργίαMyComponent() {
συνθ [count, setCount] = useAtom (countAtom);
συνθ προσαύξηση = () => setCount((prevCount) => prevCount + 1);
ΕΠΙΣΤΡΟΦΗ (


Καταμέτρηση: {count}</p>

Σε αυτό το παράδειγμα, το useAtom Ο γάντζος χρησιμοποιείται για πρόσβαση στο countAtom άτομο και τη σχετική τιμή του. ο setCount Η συνάρτηση χρησιμοποιείται για την ενημέρωση της τιμής του ατόμου και τυχόν συσχετισμένα στοιχεία θα αποδοθούν ξανά αυτόματα με την ενημερωμένη τιμή.

Ενεργοποιώντας μόνο τα επηρεαζόμενα στοιχεία, μειώνει τις περιττές εκ νέου απόδοση σε όλη την εφαρμογή. Αυτή η στοχευμένη προσέγγιση για την εκ νέου απόδοση βελτιώνει τη συνολική απόδοση της εφαρμογής.

Με τα βασικά εκτός λειτουργίας, ας δημιουργήσουμε μια απλή εφαρμογή To-do React για να κατανοήσουμε καλύτερα τις δυνατότητες διαχείρισης κατάστασης του Jotai.

Μπορείτε να βρείτε τον πηγαίο κώδικα αυτού του έργου σε αυτό Αποθετήριο GitHub.

State Management στο React με χρήση Jotai

Για να ξεκινήσετε, δημιουργήστε μια εφαρμογή React. Εναλλακτικά, μπορείτε χρησιμοποιήστε το Vite για να δημιουργήσετε ένα έργο React. Μόλις δημιουργήσετε μια βασική εφαρμογή React, προχωρήστε και εγκαταστήστε το Jotai στην εφαρμογή σας.

npm εγκατάσταση jotai

Στη συνέχεια, για να χρησιμοποιήσετε το Jotai στην εφαρμογή σας, πρέπει να τυλίξετε ολόκληρη την εφαρμογή σας με το Προμηθευτής συστατικό. Αυτό το στοιχείο περιέχει το χώρο αποθήκευσης που χρησιμεύει ως κεντρικός κόμβος για την παροχή τιμών ατόμων σε όλη την εφαρμογή.

Επιπλέον, σας επιτρέπει να δηλώσετε την αρχική κατάσταση των ατόμων. Τυλίγοντας την εφαρμογή σας με το Προμηθευτής, όλα τα στοιχεία της εφαρμογής αποκτούν πρόσβαση στα άτομα που έχετε ορίσει και στη συνέχεια μπορούν να αλληλεπιδράσουν και να ενημερώσουν την κατάσταση μέσω του useAtom άγκιστρο.

εισαγωγή { Πάροχος } από"γιώται";

Τώρα τυλίξτε την εφαρμογή στο index.js ή main.jsx όπως φαίνεται παρακάτω.

εισαγωγή Αντιδρώ από'αντιδρώ'
εισαγωγή ReactDOM από'react-dom/client'
εισαγωγή App από"./App.jsx"
εισαγωγή"./index.css"
εισαγωγή { Πάροχος } από"γιώται";

ReactDOM.createRoot(έγγραφο.getElementById('ρίζα')).καθιστώ(



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

Διαμορφώστε ένα χώρο αποθήκευσης δεδομένων

Το κατάστημα λειτουργεί ως κεντρικό αποθετήριο για την κατάσταση της εφαρμογής. Συνήθως περιέχει τον ορισμό των ατόμων, των επιλογέων και οποιωνδήποτε άλλων σχετικών συναρτήσεων που απαιτούνται για τη διαχείριση κατάστασης χρησιμοποιώντας το Jotai.

Σε αυτήν την περίπτωση, διαχειρίζεται τα άτομα για τη διαχείριση της λίστας στοιχείων για την εφαρμογή To-do. Στο src κατάλογος, δημιουργία TodoStore.jsx αρχείο και προσθέστε τον παρακάτω κώδικα.

εισαγωγή { άτομο } από"γιώται";
εξαγωγήσυνθ TodosAtom = άτομο([]);

Με τη δημιουργία και την εξαγωγή του TodosAtom, μπορείτε άνετα να αλληλεπιδράσετε και να ενημερώσετε την κατάσταση εκκρεμοτήτων σε διάφορα στοιχεία της εφαρμογής.

Εφαρμόστε τη Λειτουργικότητα της εφαρμογής To-Do

Τώρα που έχετε διαμορφώσει το Jotai στην εφαρμογή React και δημιουργήσατε ένα άτομο για τη διαχείριση της κατάστασης της εφαρμογής, μεταβείτε μπροστά και δημιουργήστε ένα απλό στοιχείο υποχρεώσεων που θα χειρίζεται τις λειτουργίες προσθήκης, διαγραφής και επεξεργασίας για τις υποχρεώσεις είδη.

Δημιούργησε ένα νέο components/Todo.jsx αρχείο στο src Ευρετήριο. Σε αυτό το αρχείο, προσθέστε τον παρακάτω κώδικα:

  1. Εισαγάγετε το χώρο αποθήκευσης δεδομένων και το useAtom άγκιστρο.
    εισαγωγή React, { useState } από'αντιδρώ';
    εισαγωγή { TodosAtom } από"../TodoStore";
    εισαγωγή { useAtom } από'γιώται';
  2. Δημιουργήστε το λειτουργικό στοιχείο και προσθέστε τα στοιχεία JSX.
    συνθ Todo = () => {

    ΕΠΙΣΤΡΟΦΗ (

    placeholder="Νέα δουλειά"
    value={value}
    onChange={event => setValue (event.target.value)}
    />

εξαγωγήΠροκαθορισμένο Να κάνω;

Το στοιχείο αποδίδει μια απλή διεπαφή χρήστη για τη διαχείριση μιας λίστας στοιχείων υποχρεώσεων.
  • Τέλος, εφαρμόστε τις συναρτήσεις προσθήκης και διαγραφής εκκρεμών εργασιών.
    συνθ [value, setValue] = useState('');
    συνθ [todos, setTodos] = useAtom (TodosAtom);

    συνθ handleAdd = () => {
    αν (value.trim() !== '') {
    setTodos(prevTodos => [
    ...prevTodos,
    {
    ταυτότητα: Ημερομηνία.τώρα(),
    κείμενο: αξία
    },
    ]);
    setvalue('');
    }
    };

    συνθ handleΔιαγραφή = ταυτότητα => {
    setTodos(prevTodos => prevTodos.filter(να κάνω => todo.id !== id));
    };

  • ο λαβήΠροσθήκη Η λειτουργία είναι υπεύθυνη για την προσθήκη ενός νέου στοιχείου εκκρεμότητας στη λίστα των αντικειμένων. Αρχικά, ελέγχει εάν η τιμή της μεταβλητής δεν είναι κενή. Στη συνέχεια δημιουργεί ένα νέο αντικείμενο με ένα μοναδικό αναγνωριστικό και ως περιεχόμενό του το αντικείμενο που έχει εισαχθεί.

    ο setTodos Στη συνέχεια, η συνάρτηση καλείται να ενημερώσει τη λίστα με τα στοιχεία υποχρεώσεων στο άτομο προσθέτοντας το νέο στοιχείο. Τέλος, το αξία κατάσταση επαναφέρεται σε κενή συμβολοσειρά μετά την πράξη προσθήκης.

    Από την άλλη πλευρά, το handleΔιαγραφή Η λειτουργία είναι υπεύθυνη για την αφαίρεση ενός στοιχείου υποχρεώσεων από τη λίστα. Φιλτράρει το αντικείμενο υποχρεώσεων χρησιμοποιώντας το καθορισμένο αναγνωριστικό από την υπάρχουσα λίστα χρησιμοποιώντας το prevTodos.filter μέθοδος. Στη συνέχεια ενημερώνει τη λίστα χρησιμοποιώντας το setTodos λειτουργία—διαγράφοντας ουσιαστικά το καθορισμένο αντικείμενο υποχρεώσεων από τη λίστα.

    Χρήση του Jotai για τη διαχείριση κατάστασης σε εφαρμογές React

    Αυτός ο οδηγός παρέχει μια εισαγωγή στη χρήση του Jotai ως λύση διαχείρισης κράτους. Ωστόσο, υπάρχουν και άλλα εξαιρετικά χαρακτηριστικά, όπως η δυνατότητα δημιουργίας ασύγχρονων ατόμων ειδικά σχεδιασμένων για διαχείριση κατάστασης που περιλαμβάνει ασύγχρονες λειτουργίες όπως κλήσεις API.

    Επιπλέον, μπορείτε επίσης να δημιουργήσετε παράγωγα άτομα, τα οποία χρησιμοποιούνται για τον υπολογισμό και την εξαγωγή τιμών από υπάρχοντα άτομα, επιτρέποντάς σας να διαχειρίζεστε πολύπλοκες καταστάσεις με βάση άλλα μέρη της εφαρμογής.

    Αξιοποιώντας αυτές τις δυνατότητες διαχείρισης κατάστασης, μπορείτε να δημιουργήσετε πιο ισχυρές και επεκτάσιμες εφαρμογές React.