Pradžia / Programavimas / React.js mokymai

React.js mokymai

Kodėl React vis dar dominuoja front-end pasaulyje

Jei šiandien esi web kūrėjas arba tik pradedi savo kelionę programavimo pasaulyje, tikriausiai jau girdėjai apie React. Bet gal dar nesuprantai, kodėl visi apie jį kalba, kodėl darbdaviai jo reikalauja, ir kodėl tiek daug kursų, YouTube video ir straipsnių sukasi apie šią vieną biblioteką.

React.js – tai JavaScript biblioteka, kurią 2013 metais išleido Facebook (dabar Meta). Nuo tada ji tapo vienu populiariausių įrankių kuriant interaktyvias vartotojo sąsajas. Pagal 2023 metų Stack Overflow apklausą, React išlieka viena labiausiai naudojamų web technologijų pasaulyje – ir tai nėra atsitiktinumas.

Bet čia ne apie statistiką. Čia apie tai, kaip iš tikrųjų išmokti React – ne tik teoriškai, bet taip, kad galėtum kurti realius projektus, gauti darbą arba pradėti savo verslą.

Prieš React – ką reikia žinoti

Viena dažniausių klaidų, kurią daro pradedantieji – šoka tiesiai į React nieko nežinodami apie JavaScript. Tai tas pats, kaip bandyti išmokti daugybą nežinant sudėties. Gali kažkaip prasibrauti, bet vėliau viskas griūva.

Prieš pradedant React mokymą, reikia solidžiai suprasti šiuos JavaScript dalykus:

  • ES6+ sintaksė – arrow functions, destructuring, spread operator, template literals
  • Array metodaimap(), filter(), reduce() – React kode juos naudosi nuolat
  • Promises ir async/await – duomenų gavimas iš API yra kasdienybė
  • Moduliaiimport ir export sintaksė
  • DOM manipuliacija – bent pagrindinis supratimas, kaip naršyklė veikia

Jei šie dalykai tau skamba pažįstamai ir gali juos naudoti be Google pagalbos – esi pasiruošęs. Jei ne – skirkite dar 2-4 savaites grynajam JavaScript. Tai investicija, kuri atsipirks.

HTML ir CSS žinios taip pat būtinos, bet čia didelio gylio nereikia. Pakanka suprasti, kaip veikia semantinė struktūra, flexbox, grid ir pagrindiniai selektoriai.

React konceptai, kuriuos reikia suprasti iš esmės, ne atmintinai

Daugelis žmonių mokosi React kaip papūgos – kopijuoja kodą, bet nesupranta, kodėl jis veikia. Tai veikia kurį laiką, bet kai susiduri su realiu projektu ar interviu, viskas išlenda.

Štai pagrindiniai konceptai, kuriuos reikia suprasti giliai:

Komponentai – tai React širdis. Viskas yra komponentas. Mygtukas – komponentas. Navigacija – komponentas. Visa puslapis – komponentas. Svarbu suprasti, kad komponentas yra tiesiog JavaScript funkcija, kuri grąžina JSX. Nėra jokios magijos.

JSX – tai HTML išvaizdos sintaksė JavaScript viduje. Techniškai tai yra JavaScript, kurį Babel paverčia į React.createElement() iškvietimus. Svarbu žinoti, kad JSX turi savo taisykles – className vietoj class, htmlFor vietoj for, ir kiekvienas elementas turi būti uždarytas.

Props – tai kaip komponentai „kalbasi” tarpusavyje. Tėvinis komponentas perduoda duomenis vaikiniam per props. Svarbu suprasti, kad props yra read-only – vaikinis komponentas negali jų keisti.

State – tai dinaminiai duomenys, kurie gyvena komponento viduje. Kai state pasikeičia, React automatiškai perkrauna komponentą. Čia atsiranda interaktyvumas.

Virtual DOM – React nekuria DOM elementų tiesiogiai kiekvieną kartą. Jis palaiko virtualią DOM kopiją atmintyje, lygina su tikrąja ir atnaujina tik tai, kas pasikeitė. Tai daro React greitą.

Rekomenduoju kiekvieną iš šių konceptų ne tik perskaityti, bet ir pabandyti paaiškinti žodžiais – sau ar draugui. Jei negali paaiškinti paprastai, dar nesupranti.

Hooks – modernaus React pagrindas

Jei mokotės React iš senesnių šaltinių (iki 2019 metų), galite susidurti su klasiniais komponentais. Jie vis dar veikia, bet šiandieniniame React pasaulyje beveik viskas rašoma su funkciniais komponentais ir hooks. Todėl čia ir sutelksime dėmesį.

useState – pats paprasčiausias ir dažniausiai naudojamas hook. Leidžia komponentui turėti lokalią būseną:


const [count, setCount] = useState(0);

Čia count – dabartinė reikšmė, setCount – funkcija jai pakeisti, o 0 – pradinė reikšmė. Kai iškviečiame setCount, komponentas perkraunamas su nauja reikšme.

useEffect – šis hook leidžia atlikti „šalutinius efektus” – duomenų gavimą, prenumeratas, DOM manipuliaciją. Jis vykdomas po kiekvieno renderio (arba tik tada, kai pasikeičia nurodytos priklausomybės). Tai vienas sudėtingiausių hooks pradedantiesiems, nes reikia suprasti priklausomybių masyvą.

useContext – leidžia dalintis duomenimis tarp komponentų neperduodant props per kiekvieną lygį. Tai sprendžia vadinamąją „props drilling” problemą.

useRef – leidžia pasiekti DOM elementus tiesiogiai arba saugoti reikšmę, kuri neperkrauna komponento pasikeitus.

useMemo ir useCallback – optimizacijos hooks, kurie padeda išvengti nereikalingų perskaičiavimų ir funkcijų perkūrimo. Pradedantiesiems jų nereikia iš karto – pirmiausia supraskite pagrindinius.

Praktinis patarimas: nesistenkite išmokti visų hooks iš karto. Pradėkite nuo useState ir useEffect. Kai juos suprasite tikrai gerai, likusieji atrodys daug natūraliau.

Kaip struktūruoti mokymosi procesą

Viena didžiausių problemų mokantis React – „tutorial hell”. Tai situacija, kai žmogus žiūri video po video, seka pamoka po pamokos, bet kai atsisėda pats rašyti kodą – nieko negali. Tai labai dažna problema ir ji turi sprendimą.

Štai kaip rekomenduočiau struktūruoti mokymąsi:

1-2 savaitės: Pagrindai

Išmokite sukurti React projektą su Vite (npm create vite@latest – dabar tai rekomenduojamas būdas, ne senasis Create React App). Supraskite komponentų struktūrą, props, state ir paprastus hooks. Sukurkite keletą mažų projektėlių – skaičiuotuvą, todo sąrašą, paprastą formą.

3-4 savaitės: Gilesnis supratimas

Susipažinkite su React Router navigacijai, išmokite gauti duomenis iš API su useEffect ir fetch arba axios. Pradėkite galvoti apie komponentų struktūrą – kaip padalinti UI į prasmingus komponentus.

5-8 savaitės: Realus projektas

Čia ateina svarbiausia dalis – sukurkite kažką realaus. Ne dar vieną todo aplikaciją, o kažką, kas jus domina. Gal tai receptų svetainė, filmų katalogas, asmeninis portfolio, arba paprastas e-komercijos prototipas. Svarbu, kad projektas būtų pakankamai sudėtingas, kad susidurstumėte su realiais iššūkiais.

Kai susidursite su problema (o susidursite), nesiskubinkite ieškoti atsakymo. Praleiskite bent 20-30 minučių bandydami išspręsti patys. Šis procesas – tai tikrasis mokymasis.

Įrankiai ir ekosistema, kurią verta žinoti

React pats savaime yra tik UI biblioteka. Realiam projektui reikia daugiau. Štai ekosistema, su kuria anksčiau ar vėliau susidursite:

Stilizavimas – yra keletas populiarių variantų. Tailwind CSS šiuo metu yra labai populiarus ir leidžia greitai kurti UI naudojant utility klases tiesiogiai JSX. CSS Modules – paprastesnis sprendimas, kai kiekvienas komponentas turi savo CSS failą be konfliktų. Styled Components – CSS-in-JS sprendimas, leidžiantis rašyti CSS tiesiai JavaScript faile.

State valdymas – kai aplikacija auga, lokalaus state nebeužtenka. Redux Toolkit yra klasikinis pasirinkimas didelėms aplikacijoms, bet jis turi mokymosi kreivę. Zustand – paprastesnis ir lengvesnis alternatyvas, kurį daug kūrėjų šiandien renkasi. React Query (TanStack Query) – puikus įrankis serverio duomenų valdymui, kešavimui ir sinchronizacijai.

MaršrutizacijaReact Router yra standartas. Versija 6 gerokai skiriasi nuo ankstesnių, todėl mokykitės iš naujesnių šaltinių.

TestavimasJest ir React Testing Library yra standartinis derinys. Testavimas dažnai ignoruojamas mokymosi procese, bet darbdaviai tai vertina.

Next.js – tai React framework’as, kuris prideda server-side rendering, file-based routing ir daug kitų funkcijų. Daugelis šiuolaikinių projektų naudoja Next.js vietoj grynojo React. Kai suprasite React pagrindus, Next.js bus logiškas kitas žingsnis.

Patarimas: nesistenkite išmokti visko iš karto. Pradėkite nuo grynojo React, tada pridėkite React Router, tada – state valdymą. Ekosistema didelė, bet ji auga natūraliai, kai atsiranda poreikis.

Dažniausios klaidos ir kaip jų išvengti

Per daugelį metų stebint, kaip žmonės mokosi React, išryškėja keletas pasikartojančių klaidų:

State mutavimas tiesiogiai – tai klasika. Daugelis pradedančiųjų bando keisti state objektą tiesiogiai, o ne per setter funkciją. Pavyzdžiui, user.name = "Jonas" vietoj setUser({...user, name: "Jonas"}). React nepamatys tokio pakeitimo ir komponentas nepersikraus.

useEffect priklausomybių ignoravimas – ESLint dažnai perspėja apie trūkstamas priklausomybes useEffect masyve. Daugelis tiesiog prideda // eslint-disable-next-line ir eina toliau. Tai blogai. Supraskite, kodėl perspėjimas atsiranda ir kaip teisingai jį išspręsti.

Per daug state – ne visi duomenys turi būti state. Jei reikšmę galima apskaičiuoti iš esamo state, darykite tai renderio metu, ne saugokite atskirai.

Komponentų perkrovimas logika – React komponentas turėtų būti atsakingas už vieną dalyką. Jei komponentas daro per daug – skaidykite jį į mažesnius.

Key prop ignoravimas sąrašuose – kai renderinate sąrašą su map(), kiekvienas elementas turi turėti unikalų key prop. Naudokite unikalius ID, ne indeksus (nebent sąrašas niekada nesikeičia).

Mokymasis be praktikos – jau minėjome, bet verta pakartoti. Kiekvienas naujas konceptas turi būti išbandytas rankose. Skaitydami ar žiūrėdami video, atrodo, kad viską suprantate. Tikrasis supratimas ateina tik rašant kodą.

Nuo mokymosi iki darbo rinkos – realus kelias

Gerai, mokotės React. Bet koks tikslas? Jei tikslas – gauti darbą arba dirbti freelance, reikia galvoti plačiau nei tik techninis mokymasis.

Pirmiausia – portfolio. Jums reikia 2-3 projektų, kurie parodo jūsų gebėjimus. Geriausi portfolio projektai yra tie, kurie sprendžia realią problemą, turi gerą UI, yra patalpinti internete (Vercel ar Netlify tai daro nemokamai) ir turi kodą GitHub’e. Darbdaviai žiūri į kodą – stenkitės, kad jis būtų švarus ir gerai struktūruotas.

Antra – GitHub aktyvumas. Reguliariai commitinkite kodą. Žalia kvadratėlių juosta GitHub profilyje rodo, kad dirbate nuolat, ne tik prieš siųsdami CV.

Trečia – interviu pasiruošimas. React interviu dažniausiai apima: komponentų gyvavimo ciklo klausimus, hooks veikimo principus, optimizacijos klausimus (memo, useMemo, useCallback), state valdymo sprendimus ir praktines užduotis. Praktikuokite atsakymus balsu – tai skiriasi nuo rašymo.

Ketvirta – bendruomenė. React bendruomenė yra didelė ir aktyvi. Twitter/X, Discord serveriai, Reddit (r/reactjs), vietiniai meetup’ai – tai vietos, kur galite mokytis iš kitų, gauti feedback’ą ir kurti ryšius. Daugelis žmonių gavo darbus per pažintis, ne per CV.

Realiai kalbant – nuo nulio iki pirmo darbo paprastai užtrunka 6-12 mėnesių intensyvaus mokymosi. Tai nėra greita, bet tai realistiška. Nesitikėkite stebuklo po 30 dienų kurso – tokie pažadai dažniausiai yra marketingas.

React mokymasis – tai ne sprintas, o maratonas. Technologijos keičiasi, ekosistema evoliucionuoja, ir net patyrę kūrėjai nuolat mokosi. Bet tai ir yra vienas gražiausių dalykų šioje srityje – niekada nėra nuobodu. Jei mokotės su tikru smalsumu, ne tik dėl darbo, jei kuriate projektus, kurie jus domina, ir jei nesibijote klysti ir pradėti iš naujo – React tikrai taps jūsų įrankiu, o ne tik eiline technologija CV sąraše.