Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk.

A React és a Firebase kombinációjával szuper érzékeny alkalmazásokat készíthet. Ha már ismeri a Reactot, a Firebase integrálásának megtanulása kiváló következő lépés.

A Firebase adatkezelésének alapjainak megértéséhez meg kell tanulnia, hogyan párosítsa Firestore-adatbázisát a React-tal a CRUD-alkalmazás létrehozásához. Ennek a tudásnak a felhasználásával megkezdheti a méretezhető, teljes veremű alkalmazások létrehozását kis vagy nulla háttérkóddal.

Csatlakoztassa React alkalmazását a Firebase Firestore-hoz

Ha még nem tette meg, nyissa meg a Firebase konzolt, és csatlakoztassa a Firestore-t a React projekthez.

A folyamat egyszerű, ha már megtette létrehozta a React alkalmazást.

Ezután készítsen egy újat firebase_setup könyvtárat a projekten belül src mappát. Hozzon létre egy firebase.js fájl ebben a mappában. Illessze be a Firebase-projekt létrehozásakor kapott konfigurációs kódot az új fájlba:

instagram viewer
import { inicializálása App } tól től "firebase/app";
import {getFirestore} tól től "@firebase/firestore"

const firebaseConfig = {
apiKey: folyamat.env.REACT_APP_apiKey,
authDomain: folyamat.env.REACT_APP_authDomain,
projektId: folyamat.env.REACT_APP_projectId,
tárolás Vödör: folyamat.env.REACT_APP_storageBucket,
messagingSenderId: folyamat.env.REACT_APP_messagingSenderId,
appId: folyamat.env.REACT_APP_appId,
mérésId: folyamat.env.REACT_APP_measurementId
};

const app = inicializálásaApp (firebaseConfig);
exportconst firestore = getFirestore (alkalmazás)

A tűzraktár változó tartalmazza a Firebase Firestore-környezetet. Ezt az alkalmazásban fogja használni, amikor API-kérelmeket küld.

Bár ez a kód az .env módszert használja a konfigurációs információk elfedésére, vannak jobbak is titkok tárolásának módjai a Reactban.

Most telepítse a tűzbázis és uuid könyvtárakat a React alkalmazásban. Míg az uuid nem kötelező, használhatja egyedi azonosítóként minden egyes, a Firestore adatbázisba feltöltött dokumentumhoz.

npm telepítés tűzbázis uuid

Íme egy bemutató, hogy mit készül építeni a React és a Firestore segítségével:

Írjon adatokat a Firestore adatbázisba

Használhatja a setDoc vagy addDoc módszerrel adhat hozzá dokumentumokat a Firebase-hez. A addDoc módszer előnye, hogy utasítja a Firebase-t, hogy minden rekordhoz egyedi azonosítót állítson elő.

A kezdéshez importálja a következő függőségeket az App.js-ba:

import './App.css';
import { useEffect, useState } tól től 'reagál';
import { addDoc, collection, setDoc, deleteDoc, doc, query, onSnapshot } tól től "firebase/firestore";
import { tűzraktár } tól től './firebase_setup/firebase';
import { v4 mint uuidv4 } tól től 'uuid';

Mielőtt folytatná, nézze meg a DOM-struktúrát és az oktatóanyag által használt állapotokat:

funkcióApp() {
const [info, setInfo] = useState([])
const [isUpdate, setisUpdate] = useState(hamis)
const [docId, setdocId] = useState("")
const [részlet, setDetail] = useState("")
const [ids, setIds] = useState([])

Visszatérés (
<div className="App">
<forma>
<bemenet típusa= "szöveg" value={detail} onChange={handledatachange} />
{
is Update? (
<>
<button onClick={handlesubmitchange} type = "Beküldés">Frissítés</button>
<gomb onClick={() => { setisUpdate (false); setDetail("")}}>
x
</button>
</>
): (<button onClick={submithandler} type="Beküldés">Megment</button>)
}
</form>

{info.map((adatok, index)=>
<div kulcs={ids[index]} className='adattároló' id='adattároló'>
<p osztálynév='adat' id='adat' data-id ={ids[index]} key={ids[index]}>{adat}</p>
<gomb className='törlés gomb' id='törlés gomb' onClick={handledelete}>
Töröl
</button>

<gomb className='frissítés gomb' id='frissítés gomb' onClick={handleupdate}>
Szerkesztés
</button>
</div>
)}
</div>
);
}

exportalapértelmezett App;

Ezután hozzon létre egy benyújtási kezelőt az adatok Firestore adatbázisba való írásához. Ez egy onSubmit esemény. Tehát a küldés gombban fogod használni.

Ezenkívül hozzon létre egy változáskezelőt. Ez az esemény figyeli az űrlapmező változásait, és átadja a bemenetet egy tömbbe (a Részlet tömb ebben az esetben). Ez bekerül az adatbázisba.

const handdatachange = (e) => {
setDetail(e.cél.érték)
};

const Submithandler = (e) => {
e.preventDefault()
const ref = gyűjtés (tűzhely, "teszt adat")

hagyja adat = {
uuid: uuidv4(),
testData: részlet
}

próbáld ki {
addDoc (hivatkozás, adatok)
} fogás(hiba) {
konzol.log (hiba)
}

setDetail("")
}

Míg a Firebase automatikusan létrehozza a dokumentumazonosítókat (hacsak nem akadályozza meg), az UUID mező minden egyes dokumentum egyedi azonosítójaként is szolgál.

Adatok olvasása a Firestore adatbázisból

Adatok lekérése a Firestore adatbázisból a useEffect hook a Firestore lekérdezési módszerrel:

 useEffect(() => {
const getData = async () => {
const adatok = várja lekérdezés (gyűjtemény (tűzhely, "teszt_adatok"));

onSnapshot (adat, (querySnapshot) => {
const databaseInfo = [];
const dataIds = []

querySnapshot.az egyes((doc) => {
adatbázisInfo.nyom(doc.adat().teszt adat);
dataIds.nyom(doc.id)
});

setIds (dataIds)
setInfo (adatbázisInfo)
});
}

getData()
}, [])

A fenti kód a Firebase lekérdezést használja, hogy pillanatképet kapjon a Firestore-nak elküldött adatokról a onSnapshot funkció.

A pillanatkép lehetővé teszi az alkalmazás számára, hogy figyelje a háttérben történt változásokat. Automatikusan frissíti a klienst, valahányszor valaki ír az adatbázisba.

A setInfo állapot megragadja az adatokat az egyes dokumentumokban. Ezt feltérképezheti (a info tömb) a DOM-nak való renderelés közben.

A setIds állapot nyomon követi az összes dokumentumazonosítót (a Ids sor). Az egyes azonosítók segítségével futtathatja a Törlés és Frissítés lekérdezéseket az egyes dokumentumokon. Ezután minden dokumentumazonosítót átadhat DOM-attribútumként, miközben leképezi a dokumentumot info sor.

Íme a DOM-on belüli állapothasználat (az előző kódrészletben látható módon):

Frissítse a meglévő adatokat a Firestore-ban

Használja a setDoc módszer egy dokumentum vagy a dokumentumban lévő mező frissítésére.

Határozzon meg két kezelőt a frissítési művelethez. Az egyik kezeli a beküldés gombot a szerkesztett adatokhoz (kezeli a módosítás benyújtását), míg a másik a gombé, amely átírja az adatokat a beviteli mezőbe szerkesztés céljából (kezelje a frissítést):

const handupdate = (e) => {
setisUpdate(igaz)
setDetail(e.cél.parentNode.gyermekek[0].textContent)
setdocId(e.cél.parentNode.gyermekek[0].getAttribute(&idézet;data-id&idézet;))
};

const handsubmitchange = async (e) => {
e.preventDefault()
const docRef = doc (tűzhely, 'teszt adat', docId);

const updatedata = várja {
testData: részlet
};

várjasetDoc(docRef, frissített adatok, { összeolvad:igaz })
.then (console.log("Az adatok sikeresen módosítva"))

setisUpdate(hamis)
setDetail("")
}

Ahogy az előző kódrészletben is látható, itt van a DOM-megjelenítés a létrehozási és frissítési műveletekhez:

A kezelje a frissítést függvény minden dokumentumazonosítót megcéloz a DOM-ban a csomópont elérési útja segítségével. Ennek segítségével lekérdezi az adatbázisból az egyes dokumentumokat, hogy módosításokat hajtson végre. A Szerkesztés gomb ezt a funkciót használja.

Így isFrissítés (nyomon követte a setisUpdate állapot) visszatér igaz amikor a felhasználó a Szerkesztés gombra kattint. Ez a művelet előhozza a Frissítés gombot, amely elküldi a szerkesztett adatokat, amikor a felhasználó rákattint. Az extra x gombra kattintva bezárja a szerkesztési műveletet – a beállítással isFrissítés nak nek hamis.

Ha isFrissítés van hamis, a DOM megtartja a kezdeti Mentés gombot.

Törölje az adatokat a Firestore-ból

A Firestore-ból a meglévő adatokat törölheti a deleteDoc módszer. Ahogyan a Frissítés műveletnél tette, kérjen le minden dokumentumot az egyedi azonosítójával úgy, hogy megcélozza a DOM attribútumait a csomópont elérési útjával:

const handledelete = async (e) => {
const docRef = doc (tűzhely, 'teszt adat', e.target.parentNode.children[0].getAttribute("data-id"));

várja deleteDoc (docRef)
.then(() => {
konzol.log(`${e.target.parentNode.children[0].textContent} sikeresen törölve.")
})
.fogás(hiba => {
konzol.log (hiba);
})
}

Adja át a fenti funkciót a Törlés gombra. Ha a felhasználó rákattint, eltávolítja az adatokat az adatbázisból és a DOM-ból.

Párosítsa a Firebase-t a legjobb előtér-keretrendszerével

A Firebase segítségével kevesebb kódot írhat, miközben közvetlenül az ügyféloldalról kérdez le adatokat. A React mellett más JavaScript-keretrendszereket is támogat, beleértve az Angular.js-t, a Vue.js-t és sok mást.

Most, hogy látta, hogyan működik a React, érdemes megtanulnia párosítani az Angular.js-szel.