A Redux áruház fenntartása – CloudSavvy IT

Avatar Gadam | 2021.02.27. 48 Views 0 Likes 0 Ratings

48 Views 0 Ratings Rate it

[ad_1]

A Redux logót ábrázoló ábra

A Redux leegyszerűsíti a komplex alkalmazások állapotkezelését. Mivel a Redux áruház tartalmazza az alkalmazás teljes állapotát, annak fenntartása lehetővé teszi a felhasználó munkamenetének mentését és visszaállítását.

Az áruház létrehozása

Feltételezzük, hogy ismeri a Redux alapjait.

Ehhez az oktatóanyaghoz egy naiv reduktorral ellátott barebones boltot fogunk használni.

import {createStore} from "redux";
 
const state = {authenticated: false};
 
const reducer = (state, action) => ({...state, ...action});
 
const store = createStore(reducer, state);

Ez a triviális példa meghatározza a Redux áruház színpadát, amely nyomon követheti, hogy bejelentkeztünk-e. A legtöbb felhasználó várhatóan továbbra is bejelentkezett marad, amikor visszatér az alkalmazásához. Jelenleg az állapot minden egyes alkalommal újraképződik, amikor az alkalmazás betöltődik, így a felhasználók csak az aktuális munkameneten belül maradnak hitelesítve.

Redux Persist hozzáadása

Redux Persist egy népszerű könyvtár, amely lehetővé teszi a kitartás hozzáadását az üzlethez. A könyvtár minden alkalommal, amikor az állapot frissül, automatikusan elmenti a boltot. Nem kell semmilyen perzisztencia kódot írni a műveletekbe vagy a csökkentőkbe.

Kezdje a Redux Persist telepítésével az npm használatával:

npm install redux-persist

Most össze kell kapcsolnia a könyvtárat az üzletével. Csomagolja be a gyökérszűkítőt a Redux Persist’s segítségével persistReducer funkció. Ez lehetővé teszi a Redux Persist számára, hogy megvizsgálja az üzletébe küldött műveleteket. Fel kell hívnia persistStore() hogy induljon a kitartásból.

import {createStore} from "redux";
import {persistStore, persistReducer} from "redux-persist";
import storage from "redux-persist/lib/storage";
 
const state = {authenticated: false};
 
const reducer = (state, action) => ({...state, ...action});
 
const persistConfig = {
    key: "root",
    storage
};
 
const persistedReducer = persistReducer(persistConfig, reducer);
 
const store = createStore(persistedReducer, state);
 
const persistor = persistStore(store);

Ez a konfiguráció használatra kész. Csak néhány sornyi kóddal gondoskodtunk arról, hogy a Redux állapot változásai automatikusan fennmaradjanak. A felhasználók minden alkalommal leállítják a kijelentkezést, amikor újratöltik az alkalmazást.

Szűkítőnk tovább javul persistReducer() hogy kitartó támogatást is tartalmazzon. Ezt az újonnan becsomagolt reduktort adják át neki createStore() az eredeti helyett. Végül, persistStore() hívják, átadva a bolti példányban, a perzisztencia engedélyezéséhez.

A Redux Persist konfigurálása

A persistReducer() A function egy konfigurációs objektumot fogad el első paraméterként. Meg kell adnia a key és storage tulajdonságait.

key beállítja a fennmaradó objektum legfelső szintű tulajdonságának nevét. Az Ön üzletének állapota menti a tulajdonság értékeként.

storage meghatározza a használandó tároló motort. A Redux Persist többféle támogatást nyújt tárolási háttérképek a környezettől függően. Webes használatra a localStorage és sessionStorage Az API-k és az alapvető sütik egyaránt támogatottak. Opciók állnak rendelkezésre a React Native, a Node.js, az Electron és számos más platform számára is.

Meghatározza a használni kívánt tárolómotort azáltal, hogy importálja a csomagjából. Ezt követően az API-t megvalósító fő objektumát kell átadni storage a Redux Persist opciót.

A saját tárolómotorját egyéni tartóssági mechanizmus használatával valósíthatja meg. Hozzon létre egy objektumot a setItem(), getItem() és removeItem() mód. A Redux Persist aszinkron, ezért minden módszernek meg kell adnia egy ígéretet, amely a művelet befejezése után megoldódik.

A perzisztens objektum

A persistor tárgy visszatért persistStore() A call-nak van néhány segédprogramja a kitartás kezeléséhez.

A kitartással szüneteltetheti és folytathatja a kitartást pause() és resume() módszerek. Kényszerítheti az azonnali írást a tároló motorra flush(). Ez hasznos lehet, ha garantálnia kell, hogy az állapota megmarad egy adott művelet után.

Az összes megmaradt adatot a tárolómotorról törölheti .purge(). A legtöbb esetben ezt el kell kerülni – használjon Redux műveletet a tároló törléséhez, amely automatikusan továbbterjed a megmaradt adatokra.

Állami megbékélés

A Redux Persist három különböző módon támogatja a bolt hidratálását tartós állapottól. A hidratálás automatikusan bekövetkezik, amikor hív persistStore() és a meglévő adatok megtalálhatók a tároló motorban. A Redux Persist-nek be kell vezetnie ezeket a kezdeti adatokat az üzletébe.

Az alapértelmezett stratégia az objektumok egyesítése egy szint mélységig. A beágyazott objektumok nem kerülnek egyesítésre – a beérkező változás felülír mindent, ami már az Ön állapotában van.

  • Tartós állapot: {"demo": {"foo": "bar"}}
  • Állítsa be a raktárba: {"demo": {"example": test"}}
  • Eredményes hidratált áruház: {"demo": {"foo": "bar"}}

Opcionálisan válthat objektumok egyesítésére akár mélységig. Importálja az új állapotegyeztetőt, és adja hozzá az áruház konfigurációjához:

// usual imports omitted
import autoMergeLevel2 from "redux-persist/lib/stateReconciler/autoMergeLevel2";
 
const persistConfig = {
    key: "root",
    storage,
    stateReconciler: autoMergeLevel2
};
 
// store configuration omitted

Itt van ennek az eredménye autoMergeLevel2 a fenti példa hidratálásakor:

  • Tartós állapot: {"demo": {"foo": "bar"}}
  • Állítsa be a raktárba: {"demo": {"example": test"}}
  • Eredményes hidratált áruház: {"demo": {"foo": "bar", "example": "test"}}

A. Értékei demo a két forrás tulajdonságai kombinálódnak a hidratálás során.

Használja a hardSet egyeztetõ, ha teljesen le akarja tiltani az egyesítést. Ez helyettesíti az üzlet állapotát a tároló motor tartalmával. Ez gyakran nemkívánatos, mivel bonyolultabbá teszi az áttelepítéseket – ha új kezdeti tulajdonságot ad hozzá az állapotához, akkor a meglévő felhasználók számára nem lesz beállítva, amint a munkamenet hidratálódik.

Államvándorlás

Az átállásokkal kapcsolatban a Redux Persist beépített támogatást nyújt a fennmaradó állapot frissítéséhez. Előfordulhat, hogy a tulajdonságokat újabb alternatívákkal helyettesíti. Biztosnak kell lennie abban, hogy a meglévő felhasználóknak nem kell visszaállítaniuk az alkalmazást a használat folytatásához.

Az áttelepítéseket a migrate konfigurációs kulcs. A legegyszerűbb megközelítés egy olyan függvény átadása, amely az állapotot paraméterként veszi fel, és az átállított állapotot adja vissza. Be kell állítania a version konfigurációs kulcs, hogy a Redux Persist fel tudja ismerni, mikor kell migrálni. Minden alkalommal a version megváltozik, a migrációs függvény meghívásra kerül.

const persistConfig = {
    key: "root",
    storage,
    version: 1,
    migrate: (state) => ({...state, oldProp: undefined, newProp: "foobar"});
};

A függvény megközelítés alternatívájaként átadhat egy objektumot, amely lehetővé teszi az egyes migrációs függvények létrehozását az egyes verzió lépésekhez. Ezt át kell adni a createMigrate() funkciót, mielőtt átadnák a Redux Persist konfigurációjának.

// other imports omitted
import {createMigrate} from "redux-persist";
 
const migrations = {
    1: state => ({...state, extraProp: true}),
    2: state => ({...state, extraProp: undefined, extraPropNew: true})
};
 
const persistConfig = {
    key: "root",
    storage,
    version: 2,
    migrate: createMigrate(migrations)
}

Ebben a példában az áruházat 2-es verzióként inicializáljuk. Ha az állapot már létezett a felhasználó eszközén 0-as verzióként, akkor mindkét áttelepítés futtatásra kerül. Ha a felhasználó jelenleg az 1. verziót használta, akkor csak az utolsó áttelepítés fut.

Transzformációk alkalmazása

Végül meg kell említeni, hogy a Redux Persist támogatja az „átalakítás” funkciók használatát. Ezek hozzáadódnak a konfigurációhoz, és lehetővé teszik a mentett vagy visszaállított adatok kezelését.

A könyvtár dokumentációja számos használható átalakítást sorol fel. Ez lehetővé teszi, hogy automatikusan tömörítse, titkosítsa vagy lejárassa a megmaradt állapotot anélkül, hogy önnek kellene végrehajtania bármilyen alkalmazásszintű logikát.

Az átalakításokat tömbként adják meg a konfigurációs objektumban. A megadott sorrendben hajtják végre őket.

const persistStore = {
    key: "root",
    storage,
    transforms: [MyTransformer]
};

Saját transzformátorának megírásához használja a createTransform() funkció. Ennek két funkció és egy konfigurációs objektum van átadva:

import {createTransform} from "redux-persist";
 
const MyTransformer = createTransform(
    (inboundState, key) => ({...inboundState, b64: btoa(inboundState.b64)}),
    (outboundState, key) => ({...outboundState, b64: atob(outboundState.b64)}),
    {}
);

Ebben a példában tároljuk a b64 állapotunk tulajdonsága, mint annak Base64 kódolású értéke. Amikor az adatok tárolásra kerülnek (outboundState), az érték kódolva lesz. Dekódolják, amikor a tartós állapotot hidratálják (inboundState).

A konfigurációs objektummal definiálható a whitelist és blacklist a szűkítő nevekből. A transzformátort akkor csak olyan reduktorokkal használnák, amelyek megfelelnek ezeknek a korlátozásoknak.

Következtetés

A Redux Persist egy nagyszerű könyvtár, egyszerű felülettel. A Redux áruház automatikus perzisztenciáját csak néhány kódsorban állíthatja be. A felhasználók és a fejlesztők egyaránt hálásak lesznek a kényelméért.

[ad_2]
Source link