Avastage React ReactDOM-i võimsaid DOM-i renderdamise utiliite. Õppige tundma ReactDOM.render, hydrate, unmountComponentAtNode ja findDOMNode dünaamiliste kasutajaliideste loomiseks.
React ReactDOM: Põhjalik juhend DOM-i renderdamise utiliitide kohta
React on võimas JavaScripti teek kasutajaliideste loomiseks. Oma olemuselt abstraheerib React dokumendiobjekti mudeli (DOM) otsese manipuleerimise, võimaldades arendajatel keskenduda oma kasutajaliidese soovitud oleku kirjeldamisele. Siiski vajab React ise viisi, kuidas suhelda brauseri DOM-iga, et need kasutajaliidese kirjeldused ellu äratada. Siin tulebki mängu ReactDOM. See pakett pakub spetsiifilisi meetodeid Reacti komponentide renderdamiseks DOM-i ja nende interaktsiooni haldamiseks.
ReactDOM-i rolli mõistmine
ReactDOM toimib sillana Reacti komponendipõhise maailma ja brauseri DOM-i vahel. See pakub funktsioone Reacti komponentide renderdamiseks spetsiifilistesse DOM-i sõlmedesse, nende värskendamiseks andmete muutumisel ja isegi nende eemaldamiseks, kui neid enam ei vajata. Mõelge sellest kui mootorist, mis juhib teie Reacti rakenduse visuaalset esitust brauseris.
Oluline on eristada Reacti ja ReactDOM-i. React on põhiteek komponentide loomiseks ja oleku haldamiseks. ReactDOM vastutab nende komponentide võtmise ja nende renderdamise eest brauseri DOM-i. Kuigi Reacti saab kasutada ka teistes keskkondades (nagu React Native mobiiliarenduseks, mis kasutab teist renderdamise teeki), on ReactDOM spetsiaalselt loodud veebirakenduste jaoks.
ReactDOM-i peamised meetodid
Uurime mõningaid ReactDOM-i paketi kõige olulisemaid meetodeid:
ReactDOM.render()
Meetod ReactDOM.render()
on iga Reacti rakenduse alus. See vastutab Reacti komponendi (või komponentide puu) paigaldamise eest määratud DOM-i sõlme. See sõlm on tavaliselt teie lehel tühi HTML-element.
SĂĽntaks:
ReactDOM.render(element, container[, callback])
element
: Reacti element, mida soovite renderdada. Tavaliselt on see teie rakenduse tipptaseme komponent.container
: DOM-element, kuhu soovite komponendi paigaldada. See peaks olema teie HTML-is kehtiv DOM-sõlm.callback
(valikuline): Funktsioon, mis käivitatakse pärast komponendi renderdamist.
Näide:
Oletame, et teil on lihtne Reacti komponent nimega App
:
import React from 'react';
import ReactDOM from 'react-dom/client';
function App() {
return (
<div>
<h1>Hello, React!</h1>
<p>This is a simple React component.</p>
</div>
);
}
Ja HTML-fail elemendiga, mille ID on "root":
<div id="root"></div>
Komponendi App
renderdamiseks "root" elementi kasutaksite:
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
Oluline märkus (React 18 ja uuemad): React 18-s ja uuemates versioonides peetakse ReactDOM.render
meetodit vananenuks. Soovitatav lähenemine on kasutada ReactDOM.createRoot
, nagu eespool näidatud. See võimaldab kasutada React 18-s tutvustatud uusi samaaegsuse funktsioone.
Uuenduste mõistmine: ReactDOM.render()
vastutab ka DOM-i värskendamise eest, kui komponendi andmed muutuvad. React kasutab virtuaalset DOM-i, et tõhusalt võrrelda praegust olekut soovitud olekuga ja värskendab ainult tegeliku DOM-i vajalikke osi, minimeerides jõudluse koormust.
ReactDOM.hydrate()
Meetodit ReactDOM.hydrate()
kasutatakse siis, kui renderdate Reacti rakendust, mis on juba serveris renderdatud. See on oluline tehnika rakenduse esialgse laadimisjõudluse parandamiseks ja SEO täiustamiseks.
Serveripoolne renderdamine (SSR): SSR-i puhul renderdatakse Reacti komponendid serveris HTML-iks. See HTML saadetakse seejärel brauserile, mis saab esialgse sisu kohe kuvada. Brauser peab aga rakenduse siiski "hüdreerima" – see tähendab, lisama sündmuste kuulajad ja muutma rakenduse interaktiivseks. ReactDOM.hydrate()
võtab serveris renderdatud HTML-i ja lisab sellele Reacti sündmuste käsitlejad, muutes rakenduse täielikult funktsionaalseks.
SĂĽntaks:
ReactDOM.hydrate(element, container[, callback])
Parameetrid on samad, mis ReactDOM.render()
meetodil.
Näide:
Serveris renderdaksite oma Reacti rakenduse stringiks:
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import App from './App';
const html = ReactDOMServer.renderToString(<App />);
See HTML saadetakse seejärel kliendile.
Kliendi poolel kasutaksite Reacti sündmuste käsitlejate lisamiseks ReactDOM.hydrate()
:
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.hydrate(<App />);
HĂĽdreerimise eelised:
- Parem esialgne laadimisaeg: Kasutajad näevad sisu kohe, isegi enne kui JavaScripti kood on täielikult laaditud.
- Täiustatud SEO: Otsingumootorid saavad täielikult renderdatud HTML-i roomata ja indekseerida.
ReactDOM.unmountComponentAtNode()
Meetodit ReactDOM.unmountComponentAtNode()
kasutatakse paigaldatud komponendi eemaldamiseks DOM-ist. See võib olla kasulik, kui peate dünaamiliselt eemaldama osi oma kasutajaliidesest või kui puhastate ressursse enne lehelt lahkumist.
SĂĽntaks:
ReactDOM.unmountComponentAtNode(container)
container
: DOM-element, kuhu komponent on paigaldatud.
Näide:
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const rootElement = document.getElementById('root');
const root = ReactDOM.createRoot(rootElement);
root.render(<App />);
// Hiljem komponendi eemaldamiseks:
root.unmount();
Pärast ReactDOM.unmountComponentAtNode(rootElement)
kutsumist eemaldatakse App
komponent DOM-ist ning kõik sellega seotud sündmuste kuulajad ja ressursid puhastatakse.
Millal kasutada:
- Modaali või dialoogiakna eemaldamine kasutajaliidesest.
- Komponendi puhastamine enne teisele lehele navigeerimist.
- DĂĽnaamiline vahetamine erinevate komponentide vahel.
ReactDOM.findDOMNode() (Vananenud)
Tähtis: ReactDOM.findDOMNode()
peetakse vananenuks ja selle kasutamine kaasaegsetes Reacti rakendustes ei ole soovitatav. Varem kasutati seda paigaldatud komponendi aluseks oleva DOM-sõlme juurde pääsemiseks. Selle kasutamist aga ei soovitata, kuna see rikub Reacti abstraktsiooni ja võib põhjustada ettearvamatut käitumist, eriti funktsionaalsete komponentide ja hookide kasutuselevõtuga.
Alternatiivsed lähenemisviisid:
ReactDOM.findDOMNode()
kasutamise asemel kaaluge neid alternatiivseid lähenemisviise:
- Ref-id: Kasutage Reacti ref-e, et otse DOM-sõlmedele juurde pääseda. See on soovitatav lähenemine DOM-elementidega suhtlemiseks.
- Kontrollitud komponendid: Muutke oma komponendid "kontrollituks", hallates nende olekut Reactiga. See võimaldab teil kasutajaliidest manipuleerida ilma otse DOM-ile juurde pääsemata.
- Sündmuste käsitlejad: Lisage oma komponentidele sündmuste käsitlejad ja kasutage sündmuse objekti, et pääseda juurde siht-DOM-elemendile.
Samaaegsus React 18-s ja ReactDOM-is
React 18 tutvustab samaaegsust (concurrency), uut mehhanismi, mis võimaldab Reactil renderdamisülesandeid katkestada, peatada, jätkata või hüljata. See avab võimsad funktsioonid nagu üleminekud ja valikuline hüdreerimine, mis viib sujuvama ja reageerivama kasutajakogemuseni.
Mõju ReactDOM-ile: ReactDOM.createRoot
kasutuselevõtt on samaaegsuse eeliste ärakasutamiseks ülioluline. See meetod loob juure, millest teie rakendus renderdatakse, võimaldades Reactil renderdamisülesandeid tõhusamalt hallata.
Üleminekud (Transitions): Üleminekud võimaldavad teil märkida teatud olekuvärskendused mittekiireloomulisteks, võimaldades Reactil eelistada olulisemaid värskendusi ja säilitada reageerimisvõimet. Näiteks marsruutide vahel navigeerides saate märkida marsruudi ülemineku mittekiireloomuliseks värskenduseks, tagades, et kasutajaliides jääb reageerivaks isegi andmete hankimise ajal.
Valikuline hüdreerimine (Selective Hydration): Valikulise hüdreerimisega saab React hüdreerida üksikuid komponente nõudmisel, selle asemel et hüdreerida kogu rakendust korraga. See parandab oluliselt suurte rakenduste esialgset laadimisaega.
Globaalsed kaalutlused React ReactDOM-i jaoks
Reacti rakenduste arendamisel globaalsele publikule on oluline arvestada selliste teguritega nagu internatsionaliseerimine (i18n) ja lokaliseerimine (l10n). ReactDOM ise ei tegele otseselt nende aspektidega, kuid on ĂĽlioluline integreerida see i18n-teekide ja parimate tavadega.
- Internatsionaliseerimine (i18n): Rakenduste kujundamise ja arendamise protsess, mida saab kohandada erinevatele keeltele ja piirkondadele ilma insenertehnilisi muudatusi nõudmata.
- Lokaliseerimine (l10n): Internatsionaliseeritud rakenduse kohandamise protsess konkreetse keele või piirkonna jaoks, tõlkides teksti, kohandades vormingut ja käsitledes kultuurilisi erinevusi.
i18n-teekide kasutamine:
Teegid nagu react-i18next
ja globalize
pakuvad tööriistu tõlgete, kuupäeva- ja ajavormingute ning muude lokaliseerimisega seotud ülesannete haldamiseks. Need teegid integreeruvad tavaliselt sujuvalt Reacti ja ReactDOM-iga.
Näide react-i18nextiga:
import React from 'react';
import { useTranslation } from 'react-i18next';
function MyComponent() {
const { t } = useTranslation();
return (
<div>
<h1>{t('greeting')}</h1>
<p>{t('description')}</p>
</div>
);
}
Selles näites annab useTranslation
hook juurdepääsu tõlkefunktsioonile t
, mis hangib antud võtmele vastava tõlke. Tõlked ise on tavaliselt salvestatud eraldi failidesse iga keele jaoks.
Paremalt-vasakule (RTL) paigutus:
Mõned keeled, nagu araabia ja heebrea, kirjutatakse paremalt vasakule. Nende keelte jaoks rakendusi arendades peate tagama, et teie kasutajaliides toetab RTL-paigutust. See hõlmab tavaliselt teksti suuna kohandamist, komponentide paigutuse peegeldamist ja kahesuunalise teksti käsitlemist.
ReactDOM-i kasutamise parimad tavad
Tõhusate ja hooldatavate Reacti rakenduste tagamiseks järgige ReactDOM-i kasutamisel neid parimaid tavasid:
- Kasutage
ReactDOM.createRoot
React 18-s ja uuemates versioonides: See on soovitatav viis oma rakenduse renderdamiseks ja samaaegsuse eeliste ärakasutamiseks. - Vältige otsest DOM-i manipuleerimist: Laske Reactil DOM-i hallata. Otsene DOM-i manipuleerimine võib põhjustada vastuolusid ja jõudlusprobleeme.
- Kasutage ref-e säästlikult: Kasutage ref-e ainult siis, kui peate otse DOM-sõlmedele juurde pääsema konkreetsetel eesmärkidel, näiteks sisendväljale fookuse seadmiseks.
- Optimeerige renderdamise jõudlust: Kasutage tehnikaid nagu memoiseerimine ja shouldComponentUpdate, et vältida tarbetuid uuesti renderdamisi.
- Kaaluge serveripoolset renderdamist parema jõudluse ja SEO jaoks.
- Kasutage i18n-teeke internatsionaliseerimiseks ja lokaliseerimiseks.
- Testige oma rakendust põhjalikult erinevates brauserites ja seadmetes.
Kokkuvõte
ReactDOM on Reacti ökosüsteemi oluline osa, pakkudes silda Reacti komponentide ja brauseri DOM-i vahel. Mõistes peamisi meetodeid nagu ReactDOM.render()
, ReactDOM.hydrate()
ja ReactDOM.unmountComponentAtNode()
ning järgides parimaid tavasid, saate ehitada jõudsaid, hooldatavaid ja globaalselt kättesaadavaid Reacti rakendusi. Samaaegsuse kasutuselevõtuga React 18-s on ReactDOM.createRoot
omaksvõtmine ülioluline uute jõudluse ja reageerimisvõime tasemete avamiseks. Ärge unustage arvestada internatsionaliseerimise ja lokaliseerimise parimate tavadega, kui ehitate globaalsele publikule, et luua tõeliselt kaasavaid ja kättesaadavaid kasutajakogemusi.