Samouczek ReactJS dla początkujących

⚡ Inteligentne podsumowanie

ReactJS napędza interfejsy użytkownika niezliczonych nowoczesnych stron internetowych i aplikacji mobilnych. Ta strona wyjaśnia, czym jest ta biblioteka, jak ją skonfigurować oraz jak komponenty, JSX, stan, właściwości i zdarzenia ze sobą współpracują.

  • ⚛️ Foundation: ReactJS to oprogramowanie typu open source oparte na komponentach JavaBiblioteka skryptów stworzona w Facebooku (obecnie Meta) do tworzenia szybkich, interaktywnych interfejsów użytkownika.
  • 🧩 Składniki: Wielokrotnego użytku bloki konstrukcyjne, zapisane jako funkcje lub klasy, dzielą logikę interfejsu użytkownika na niezależne, łatwe w utrzymaniu części.
  • 📝 JSX: A JavaRozszerzenie składni skryptu umożliwia pisanie znaczników i wyrażeń podobnych do HTML w tym samym pliku.
  • 🔄 Stan i rekwizyty: Stan przechowuje prywatne, zmieniające się dane wewnątrz komponentu, podczas gdy właściwości przekazują mu dane tylko do odczytu.
  • ⚙️ Ścieżki konfiguracji: Tagi skryptów CDN nadają się do szybkich eksperymentów; pakiety npm lub Vite są odpowiednie do rzeczywistych projektów.
  • 🚀 Nowoczesna praktyka: Komponenty funkcyjne z hakami i interfejsem API createRoot React 18+ są obecnie zalecanym standardem.
  • 💼 Wpływ na karierę: Umiejętności związane z Reactem pozostają jednymi z najczęściej poszukiwanych na rynku pracy na stanowiskach front-end developerów na całym świecie.

Samouczek ReactJS dla początkujących: Poznaj podstawy React krok po kroku

Co to jest ReactJS?

ReactJS to front-end typu open source JavaBiblioteka skryptów do tworzenia interfejsów użytkownika. ReactJS Platforma jest utrzymywana przez Meta (dawniej Facebook) oraz społeczność indywidualnych programistów i firm. Jest szeroko wykorzystywana jako baza do tworzenia aplikacji jednostronicowych i aplikacji mobilnych. Jest bardzo łatwa w użyciu i pozwala użytkownikom tworzyć wielokrotnego użytku komponenty interfejsu użytkownika.

Zanim napiszesz pierwszą linijkę kodu React, warto wiedzieć, czym ta biblioteka różni się od zwykłej JavaSkrypt. W następnej sekcji omówimy jego podstawowe funkcje.

Funkcje ReactJS

JSX: JSX jest rozszerzeniem JavaSkrypt. Chociaż używanie JSX nie jest obowiązkowe w React, jest to jedna z zalet i jest łatwe w użyciu.

Komponenty : Składniki są jak czyste JavaFunkcje skryptowe, które ułatwiają kodowanie poprzez podzielenie logiki na niezależny, wielokrotnego użytku kod. Komponenty mogą być używane jako funkcje, a komponenty jako klasy. Komponenty posiadają również stan i właściwości, co ułatwia życie. Wewnątrz komponentu klasy stan i właściwości są utrzymywane.

Wirtualny DOM: React tworzy wirtualny DOM, czyli pamięć podręczną struktury danych w pamięci. Tylko ostatnie zmiany są później aktualizowane w DOM przeglądarki, co zapewnia szybkie renderowanie.

JavaWyrażenia skryptowe: Wyrażenia JS można stosować w plikach JSX za pomocą nawiasów klamrowych, na przykład {}.

Zalety ReactJS

Oto najważniejsze zalety i korzyści wynikające ze stosowania ReactJS:

  • ReactJS korzysta z wirtualnego DOM, który wykorzystuje pamięć podręczną struktury danych w pamięci, a tylko ostateczne zmiany są aktualizowane w DOM przeglądarki. Dzięki temu aplikacja działa szybciej.
  • Możesz tworzyć dowolne komponenty, korzystając z funkcji komponentów React. Komponenty można ponownie wykorzystać, a ponadto są one pomocne w utrzymaniu kodu.
  • ReactJS jest oprogramowaniem typu open source JavaBiblioteka skryptów, dzięki której łatwo zacząć.
  • ReactJS zyskał ogromną popularność w krótkim czasie i obsługuje takie produkty jak Facebook i Instagram. Jest używany przez wiele znanych firm, takich jak Apple, Netflix, itp.
  • Biblioteka ReactJS jest utrzymywana przez Meta, dlatego jest ona dobrze utrzymywana i aktualizowana.
  • ReactJS może być używany do tworzenia bogatego interfejsu użytkownika zarówno dla aplikacji komputerowych, jak i mobilnych.
  • Łatwe do debugowania i testowania, ponieważ większość kodowania odbywa się w JAVASCRIPT a nie w HTML.

Wady ReactJS

Oto wady/wady korzystania z ReactJS:

  • Większość kodu jest napisana w JSX, tzn. HTML i CSS są częścią JavaSkrypt. Może to być dość mylące, ponieważ większość innych frameworków preferuje keeping HTML oddzielony od JavaKod skryptu.
  • Rozmiar pliku ReactJS jest stosunkowo duży.

Znając kompromisy, jesteś gotowy do skonfigurowania Reacta. Najszybszym sposobem na wypróbowanie go jest bezpośrednie połączenie z CDN, które omówimy najpierw; konfiguracje oparte na npm dla rzeczywistych projektów przedstawimy później.

Używanie ReactJS z CDN

Aby rozpocząć pracę z Reactem, musimy najpierw dodać ReactJS do naszej strony. Możesz łatwo rozpocząć korzystanie z ReactJS dzięki CDN. JavaPliki skryptów pokazane poniżej.

Przejdź do witryny z dokumentacją starszej wersji React, aby uzyskać łącza CDN, np. https://legacy.reactjs.org/docs/cdn-links.html, a wymagane pliki zostaną wyjaśnione na poniższym obrazku.

Korzystanie z ReactJS z CDN — strona z linkami do dokumentacji React w CDN

Dla deweloperów

<script crossorigin src="https://unpkg.com/react@version/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.development.js"></script>

Dla prod

<script crossorigin src="https://unpkg.com/react@version/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.production.min.js"></script>

zastąpić wersja z wersją Reacta, którą chcesz dla react.development.js i react-dom.development.js. Na tej stronie używamy wersji 16, więc poniższe przykłady działają bez zmian.

💡 Uwaga: Te kompilacje UMD/CDN to starsze podejście, które działa do React 18 i nadal nadaje się do nauki. React 19 nie dostarcza już kompilacji UMD, a React 18+ został zastąpiony. ReactDOM.render w createRoot — zobacz sekcję poświęconą wersjom React na końcu tej strony.

Jeśli planujesz korzystać z plików CDN, pamiętaj o zachowaniu atrybutu crossorigin, aby uniknąć problemów międzydomenowych. Kodu ReactJS nie można wykonać bezpośrednio w przeglądarce i należy go transpilować do zwykłego kodu za pomocą Babel. JavaSkrypt przed wykonaniem w przeglądarce.

Oto skrypt BabelJS, którego można użyć:

<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>

Oto działający przykład ReactJS wykorzystujący pliki CDN i skrypt BabelJS.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello World</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <script type="text/babel">
      ReactDOM.render(
        <h1>Hello, from Guru99 Tutorials!</h1>,
        document.getElementById('app')
      );
   </script>
  </body>
</html>

Wyjście:

Wyjście Hello World z przykładu ReactJS opartego na CDN

W następnym rozdziale zajmiemy się szczegółami kodu; zobaczmy, jak działa on z plikami CDN. Bezpośrednie korzystanie ze skryptu Babel nie jest dobrą praktyką i nowicjusze powinni na razie używać go tylko do nauki ReactJS. W środowisku produkcyjnym React będzie musiał zostać zainstalowany za pomocą pakietu npm.

Korzystanie z pakietów NPM

Upewnij się, że masz zainstalowany Node.js. Jeśli nie, zapoznaj się z tym samouczkiem dotyczącym Node.js (https://www.guru99.com/node-js-tutorial.html) instalacja.

Po zainstalowaniu Node.js utwórz folder projekt reakcji/.

Aby rozpocząć konfigurację projektu, uruchom polecenie początek npm.

Oto jak będzie wyglądać struktura folderów:

reactproj\
package.json

Teraz zainstalujemy potrzebne pakiety.

Oto lista pakietów dla ReactJS. Przypinamy React do wersji 16, aby… ReactDOM.render przykłady na tej stronie działają dokładnie tak, jak pokazano:

npm install react@16 --save
npm install react-dom@16 --save
npm install react-scripts --save

Otwórz wiersz poleceń i uruchom powyższe polecenia w folderze reactproj/.

Utwórz folder src / gdzie znajdzie się cały kod JS. Cały kod projektu ReactJS będzie dostępny w folderze src/. Utwórz plik index.js i zaimportuj react i react-dom, jak pokazano poniżej.

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
    document.getElementById('root')
);

Napisaliśmy podstawowy kod dla ReactJS. Szczegóły wyjaśnimy w następnym rozdziale. Chcemy wyświetlić Cześć, z Guru99 samouczków, a to samo dotyczy elementu DOM o identyfikatorze „root”. Jest on pobierany z pliku index.html, który jest plikiem startowym, jak pokazano poniżej.

Utwórz folder public/ i dodaj do niego plik index.html, jak pokazano poniżej.

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
  </head>
  <body>
    <div id = "root"></div>
   </body>
</html>

Pakiet react-scripts zajmie się kompilacją kodu i uruchomieniem serwera w celu wyświetlenia pliku HTML, tj. index.html. Należy dodać polecenie w pliku package.json, które zajmie się użyciem react-scripts do kompilacji kodu i uruchomienia serwera, jak pokazano poniżej:

 "scripts": {
    "start": "react-scripts start"
  }

Po zainstalowaniu wszystkich pakietów i dodaniu powyższego polecenia ostateczny plik package.json wygląda następująco:

Pakiet.json

{
  "name": "reactproj",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "react-scripts start"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^16.9.0",
    "react-dom": "^16.9.0",
    "react-scripts": "^3.1.1"
  }
}

Aby rozpocząć testowanie ReactJS, uruchom polecenie:

npm run start
C:\reactproj>npm run start
> reactproj@1.0.0 start C:\reactproj
> react-scripts start

Otworzy się przeglądarka z URL http://localhost:3000/ jak pokazano poniżej:

public/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
  </head>
  <body>
    <div id = "root"></div>
  </body>
</html>

Dane wyjściowe przeglądarki po uruchomieniu projektu React opartego na npm

Użyjemy tego samego procesu do wykonania JavaPliki skryptów również w kolejnych rozdziałach. Dodaj wszystkie pliki .js i .jsx do folderu src/. Struktura plików będzie następująca:

reactproj/
	 src/
	    index.js
	 node_modules/
	 public/
                index.html
	 package.json

Jak stworzyć pierwszą konfigurację projektu React

Oto przewodnik krok po kroku w tym samouczku ReactJS, który pokaże Ci, jak rozpocząć pracę nad pierwszą aplikacją React.

Krok 1) Zaimportuj pakiety reakcji.
1. Aby rozpocząć pracę z ReactJS, musimy najpierw zaimportować pakiety reakcji w następujący sposób.

import React from 'react';
import ReactDOM from 'react-dom';

2. Zapisz plik jako index.js w folderze src/.

Krok 2) Napisz prosto Code.
W tym samouczku napiszemy prosty kod React JS, w którym wyświetlimy komunikat „Witam, z Guru99 samouczków!”

ReactDOM.render(

<h1>Hello, from Guru99 Tutorials!</h1>,
    document.getElementById('root')
);

ReactDOM.render dodam Tag do elementu o identyfikatorze root. Oto plik HTML, który mamy:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
  </head>
  <body>
    <div id = "root"></div>
  </body>
</html>

Krok 3) Skompiluj Code.

W dalszej części tego samouczka dotyczącego React.js musimy skompilować kod, aby uzyskać wynik w przeglądarce.

Oto struktura folderów:

reactproj/
     node_modules/
     src/
       index.js
     package.json
     public/
          index.html

Dodaliśmy polecenia umożliwiające kompilację końcowego pliku w package.json w następujący sposób:

"scripts": {
    "start": "react-scripts start"
  },

Aby skompilować plik końcowy, uruchom następujące polecenie:

npm run start

Po uruchomieniu powyższego polecenia pliki zostaną skompilowane i powiadomiony o wystąpieniu błędu. Jeśli wszystko wygląda dobrze, przeglądarka otworzy stronę i wyświetli ją. http://localhost:3000/

Polecenie: npm run start:

C:\reactproj>npm run start

> reactproj@1.0.0 start C:\reactproj
> react-scripts start

Krok 4) Sprawdź wyjście.
URL http://localhost:3000 otworzy się w przeglądarce po skompilowaniu kodu, jak pokazano poniżej:

Wynik pierwszego projektu React w przeglądarce

Jak skonfigurować React z Vite (nowoczesne podejście)

Powyższa konfiguracja skryptów React pochodzi z Create React App (CRA), które przez lata było standardowym narzędziem startowym. Zespół React oficjalnie wycofał Create React App w lutym 2025 roku, więc nowe projekty powinny zamiast tego korzystać z nowoczesnego narzędzia do kompilacji. Najpopularniejszym wyborem jest obecnie Zyje, który zaczyna się szybciej i tworzy mniejsze kompilacje.

Oto jak utworzyć nowy projekt React za pomocą Vite:

Krok 1) Uruchom polecenie scaffolding w terminalu:

npm create vite@latest my-react-app -- --template react

Krok 2) Przejdź do folderu i zainstaluj zależności:

cd my-react-app
npm install

Krok 3) Uruchom serwer programistyczny:

npm run dev

Vite obsługuje aplikację na http://localhost:5173/ domyślnie i ładuje się ponownie natychmiast po zapisaniu pliku.

Główne różnice w stosunku do starszej konfiguracji na tej stronie:

  • Plik wejściowy to src/main.jsx zamiast src/index.js.
  • Instaluje najnowszą wersję React, która wykorzystuje createRoot zamiast ReactDOM.render.
  • Plik index.html znajduje się w katalogu głównym projektu, a nie w public/.
  • Kompilacje są tworzone przy użyciu npm run build do folderu dist/.

W przypadku potrzeb pełnego stosu, takich jak routing i renderowanie serwera, zespół React zaleca również takie frameworki, jak Next.jsWszystko, czego nauczysz się w poniższych rozdziałach — JSX, komponenty, stan i właściwości — ma zastosowanie bez zmian w projekcie Vite lub Next.js.

Co to jest JSX?

JSX jest rozszerzeniem JavaSkrypt. To szablon skryptu, w którym będziesz mógł korzystać z HTML i JavaNapiszcie scenariusz razem.

Oto prosty przykład kodu JSX.

const h1tag = "<h1>Hello, from Guru99 Tutorials!</h1>";

Dlaczego potrzebujemy JSX w React?

W przypadku interfejsu użytkownika potrzebny jest kod HTML, a każdy element w DOM będzie miał zdarzenia do obsłużenia, zmiany stanu itp.

W przypadku Reacta pozwala nam to na wykorzystanie HTML i JavaUtwórz skrypt w tym samym pliku i sprawnie zajmij się zmianami stanu w DOM.

Wyrażenia w JSX

Oto prosty przykład użycia wyrażeń w JSX.

We wcześniejszych przykładach ReactJS napisaliśmy coś takiego:

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
    document.getElementById('root')
);

Teraz zmienimy powyższy kod, aby dodać wyrażenia. Wyrażenia są używane w nawiasach klamrowych {} i rozwijane w czasie wykonywania. Wyrażenia w React działają tak samo jak JavaWyrażenia skryptowe.

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';

const display = "Hello, from Guru99 Tutorials!";
const h1tag = "<h1>{display}</h1>";
ReactDOM.render(
    h1tag,
    document.getElementById('root')
);

Przetestujmy teraz to samo w przeglądarce.

Wyrażenia w JSX - niezastąpione dane wyjściowe wyrażenia w przeglądarce

Na powyższym zrzucie ekranu widać, że wyrażenie {display} nie jest zastępowane. React nie wie, co zrobić, gdy wyrażenie jest używane w pliku .js.

Dodajmy teraz zmiany i utwórzmy plik .jsx, jak pokazano poniżej:

test.jsx

import React from 'react';
import ReactDOM from 'react-dom';

const display = "Hello, to Guru99 Tutorials";
const h1tag =<h1>{display}</h1>;
export default h1tag;

Dodaliśmy wymagany kod i użyjemy pliku test.jsx w index.js. Chcemy, aby h1tag zmienna, która ma być użyta w pliku index.js, więc jest eksportowana tak, jak pokazano powyżej w pliku test.jsx.

Oto zmodyfikowany kod w index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import h1tag from './test.jsx';

ReactDOM.render(
    h1tag,
    document.getElementById('root')
);

Aby użyć pliku test.jsx w pliku index.js, musimy go najpierw zaimportować, jak pokazano poniżej:

import h1tag from './test.jsx';

Możemy teraz użyć tagu h1 w renderowaniu ReactDOM, jak pokazano poniżej:

ReactDOM.render(
    h1tag,
    document.getElementById('root')
);

Oto wynik, gdy sprawdzimy to samo w przeglądarce:

Wyrażenie JSX poprawnie renderowane w przeglądarce

Czym są komponenty w ReactJS?

Składniki są jak czyste JavaFunkcje skryptowe ułatwiające pisanie kodu poprzez podzielenie logiki na niezależny, możliwy do ponownego wykorzystania kod.

Komponenty jako funkcje

test.jsx

import React from 'react';
import ReactDOM from 'react-dom';
function Hello() {
    return <h1>Hello, from Guru99 Tutorials!</h1>;
}
const Hello_comp = <Hello />;
export default Hello_comp;

Stworzyliśmy funkcję o nazwie Cześć Zwraca znacznik h1, jak pokazano powyżej. Nazwa funkcji działa jak element, jak pokazano poniżej:

const Hello_comp = <Hello />;
export default Hello_comp;

Składnik Cześć jest używany jako znacznik HTML, tj. , przypisany do Witaj_komp zmienna, a ta sama jest eksportowana za pomocą export.

Użyjmy teraz tego komponentu w pliku index.js, jak pokazano poniżej:

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Oto wynik w przeglądarce:

Wyjście komponentu funkcji w ReactJS

Klasa jako komponent

Oto przykład ReactJS, który wykorzystuje klasę jako komponent.

test.jsx

import React from 'react';
import ReactDOM from 'react-dom';

class Hello extends React.Component {
  render() {
    return <h1>Hello, from Guru99 Tutorials!</h1>;
  }
}
export default Hello;

Możemy użyć komponentu Hello w pliku index.js w następujący sposób:

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';

ReactDOM.render(
    <Hello />,
    document.getElementById('root')
);

Komponent Hello jest używany jako znacznik HTML, tj. .

Oto wynik tego samego.

Klasa jako wyjście komponentu w przeglądarce

Komponenty klasowe kontra komponenty funkcyjne i haki

Poznałeś już oba sposoby pisania komponentu, więc którego z nich powinieneś użyć? Ta strona omawia komponenty klasowe, ponieważ wyraźnie przedstawiają one koncepcje stanu i cyklu życia, co jest cenne dla początkujących i nadal pojawia się w starszych bazach kodu. Jednak od czasu wprowadzenia Hooków w React 16.8, komponenty funkcyjne również mogą przechowywać stan i są one rekomendowanym stylem dla całego nowego kodu.

WYGLĄD Komponent klasy Komponent funkcyjny z hakami
Miasto this.state i this.setState() Hook useState()
Cykl życia produktu componentDidMount, componentDidUpdate, componentWillUnmount Hook useEffect() obejmuje wszystkie trzy
Składnia Więcej szablonów (konstruktor, bind, this) Krótszy, bez tego słowa kluczowego
Status Obsługiwany, starszy styl Zalecane dla nowego kodu

Oto przykład stanu z tej strony przepisany przy użyciu hooka useState:

import React, { useState } from 'react';

function Hello() {
  const [msg] = useState("Hello, from Guru99 Tutorials!");
  return <h1>{msg}</h1>;
}
export default Hello;

Obie wersje generują ten sam wynik. Zapoznaj się ze składnią klas używaną w poniższych rozdziałach, a następnie przećwicz konwersję każdego przykładu na hooki.

Co to jest stan w ReactJS?

Państwo to JavaObiekt skryptu, podobny do props, przechowujący dane do wykorzystania w renderowaniu ReactJS. Dane stanu są obiektem prywatnym i są używane w komponentach wewnątrz klasy.

Przykład stanu

Oto przykład działania pokazujący, jak używać stanu wewnątrz klasy.

test.jsx

import React from 'react';
import ReactDOM from 'react-dom';

class Hello extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
       msg: "Hello, from Guru99 Tutorials!"
    }
  }
  render() {
    return <h1>{this.state.msg}</h1>;
  }
}
export default Hello;

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';

ReactDOM.render(
    <Hello />,
    document.getElementById('root')
);

Oto, co otrzymamy, testując to w przeglądarce:

Stan w wynikach ReactJS pokazujący wiadomość ze stanu

Czym są rekwizyty w ReactJS?

Właściwości to właściwości używane wewnątrz komponentu. Działają jak obiekty globalne lub zmienne, których można używać wewnątrz komponentu.

Rekwizyty do komponentu funkcyjnego

Oto przykład przekazywania właściwości do komponentu funkcji.

import React from 'react';
import ReactDOM from 'react-dom';
function Hello(props) {
    return <h1>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;

Jak pokazano powyżej, dodaliśmy msg atrybut do komponent. Dostęp do niego jest możliwy jako props wewnątrz funkcji Hello, która jest obiektem, który będzie miał msg szczegóły atrybutu, i ten sam jest używany jako wyrażenie.

Komponent jest używany w pliku Index.js w następujący sposób:

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Oto wynik w przeglądarce:

Właściwości wyjścia komponentu funkcji w przeglądarce

Propsy dla komponentu klasowego

Aby uzyskać dostęp do rekwizytów w klasie, możemy to zrobić w następujący sposób:

test.jsx

import React from 'react';
import ReactDOM from 'react-dom';

class Hello extends React.Component {
  render() {
    return <h1>{this.props.msg}</h1>;
  }
}
export default Hello;

msg atrybut jest przekazywany do komponentu w pliku Index.js w następujący sposób:

import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';

ReactDOM.render(
    <Hello msg="Hello, from Guru99 Tutorials!" />,
    document.getElementById('root')
);

Oto wynik w przeglądarce:

Rekwizyty do wyjścia komponentu klasy w przeglądarce

Sprawdź również: - Samouczek AngularJS dla początkujących: Naucz się AngularJS krok po kroku

Cykl życia komponentu

Po omówieniu komponentów, stanu i właściwości, kolejnym krokiem jest zrozumienie, kiedy React wywołuje metody komponentu. Cykl życia komponentu dzieli się na etapy inicjalizacji, montowania, aktualizacji i odmontowywania.

Poniżej znajduje się szczegółowe wyjaśnienie każdego etapu.

Komponent w ReactJS składa się z następujących etapów:

Inicjalizacji: Jest to pierwszy etap cyklu życia komponentu.

Tutaj będzie miał domyślne właściwości i stan na poziomie początkowym.

Montowanie:W tej fazie komponent jest renderowany wewnątrz DOM. W stanie montowania mamy dostęp do następujących metod:

  • render(): Ta metoda jest dostępna dla wszystkich utworzonych komponentów. Zwraca węzeł HTML.
  • componentDidMount(): Funkcja ta jest wywoływana bezpośrednio po dodaniu komponentu do DOM.

Aktualizacja:W tym stanie użytkownik wchodzi w interakcję z DOM i następuje jego aktualizacja. Na przykład, użytkownik wprowadza coś do pola tekstowego, co powoduje aktualizację właściwości stanu.

Poniżej przedstawiono metody dostępne w stanie aktualizacji:

  • shouldComponentUpdate(): wywoływana przed ponownym renderowaniem; pozwala zdecydować, czy komponent powinien zostać zaktualizowany. Zwrócenie wartości true powoduje ponowne renderowanie komponentu.
  • componentDidUpdate(): wywoływana po zaktualizowaniu komponentu.

Odmontowanie: Taki stan występuje, gdy komponent nie jest już potrzebny lub został usunięty.

Poniżej przedstawiono metodę dostępną w stanie odmontowania:

  • componentWillUnmount(): wywoływana tuż przed usunięciem lub zniszczeniem komponentu.

Przykład działania metod cyklu życia

Poniżej znajduje się działający przykład pokazujący metody wywoływane na każdym etapie.

Przykład: complife.jsx

import React from 'react';
import ReactDOM from 'react-dom';
class COMP_LIFE extends React.Component {
  constructor(props) {
    super(props);
    this.state = {name: ''};

    this.UpdateName = this.UpdateName.bind(this);
    this.testclick = this.testclick.bind(this);
  }

  UpdateName(event) {
    this.setState({name: event.target.value});
  }

  testclick(event) {
    alert("The name entered is: "+ this.state.name);
  }

  componentDidMount() {
    console.log('Mounting State : calling method componentDidMount');
  }

  shouldComponentUpdate() {
    console.log('Update  State : calling method shouldComponentUpdate');
    return true;
  }

  componentDidUpdate() {
    console.log('Update  State : calling method componentDidUpdate')
  }
  componentWillUnmount() {
    console.log('UnMounting State : calling method componentWillUnmount');
  }

  render() {
    return (
      <div>
         Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
        <h2>{this.state.name}</h2>
        <input type="button" value="Click Here" onClick={this.testclick} />
      </div>
    );
  }
}

export default COMP_LIFE;

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import COMP_LIFE from './complife.jsx';

ReactDOM.render(
    <COMP_LIFE />,
    document.getElementById('root')
);

Podczas sprawdzania wyniku w przeglądarce:

Przykład cyklu życia renderowany w przeglądarce

W konsoli przeglądarki otrzymujesz:

Wyjście konsoli przeglądarki pokazujące komunikat componentDidMount

Gdy użytkownik wprowadzi tekst do pola tekstowego:

Aktualizacja stanu komponentu wprowadzania tekstu w polu tekstowym

W konsoli wyświetlane są następujące komunikaty:

Dane wyjściowe konsoli pokazujące uruchamianie metod cyklu życia aktualizacji

Teraz, gdy wiesz już, kiedy komponent renderuje się i aktualizuje, możemy zastosować stan i zdarzenia w praktyce: obsłudze danych wprowadzanych przez użytkownika za pomocą formularzy.

Praca z formularzami

W ReactJS elementy wejściowe HTML, takie jak , , <select /> mają swój własny stan i muszą zostać zaktualizowane, gdy użytkownik wchodzi w interakcję, za pomocą metody setState().

W tym rozdziale pokażemy, jak pracować z formularzami w ReactJS.

Oto działający przykład:

formularz.jsx

import React from 'react';
import ReactDOM from 'react-dom';
class Form extends React.Component {
  constructor(props) {
    super(props);
    this.state = {name: ''};

    this.UpdateName = this.UpdateName.bind(this);
    this.formSubmit = this.formSubmit.bind(this);
  }

  UpdateName(event) {
    this.setState({name: event.target.value});
  }

  formSubmit(event) {
    alert("The name entered is: "+ this.state.name);
  }

  render() {
    return (
      <form>
         Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
        <h2>{this.state.name}</h2>
        <input type="submit" value="Submit" onClick={this.formSubmit} />
      </form>
    );
  }
}

export default Form;

W przypadku pól wejściowych musimy zachować stan, dlatego React udostępnia w tym celu specjalną metodę o nazwie ustaw stan, która pomaga utrzymać stan w przypadku każdej zmiany. W rzeczywistym zastosowaniu wywołaj również event.preventDefault() wewnątrz formSubmit, aby zatrzymać ponowne ładowanie strony przez przeglądarkę w momencie wysłania.

Użyliśmy zdarzeń onChange i onClick w polu tekstowym i przycisku Submit. Gdy użytkownik wpisuje tekst w polu tekstowym, wywoływane jest zdarzenie onChange, a pole nazwy w obiekcie stanu jest aktualizowane, jak pokazano poniżej:

UpdateName(event) {
    this.setState({name: event.target.value});
  }

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Form from './form.jsx';

ReactDOM.render(
    <Form />,
    document.getElementById('root')
);

Dane wyjściowe w przeglądarce są następujące:

Praca z formularzami – początkowe dane wyjściowe formularza

Krok 1) Wpisz swoje imię w polu tekstowym:

Praca z formularzami - imię wpisane w polu tekstowym

Krok 2) Kliknij przycisk „Wyślij”:

Praca z formularzami – alert wyświetlany po przesłaniu

Praca ze zdarzeniami w ReactJS

Formularze to tylko jedno ze źródeł interakcji użytkownika. Praca z wydarzeniami w ReactJS przebiega tak samo, jak w JavaSkrypt. Możesz używać wszystkich procedur obsługi zdarzeń, które są używane w JavaSkrypt. Metoda setState() służy do aktualizacji stanu, gdy użytkownik wchodzi w interakcję z dowolnym elementem HTML.

Oto przykład działania pokazujący, jak używać zdarzeń w ReactJS.

wydarzenia.jsx

import React from 'react';
import ReactDOM from 'react-dom';
class EventTest extends React.Component {
  constructor(props) {
    super(props);
    this.state = {name: ''};

    this.UpdateName = this.UpdateName.bind(this);
    this.testclick = this.testclick.bind(this);
  }

  UpdateName(event) {
    this.setState({name: event.target.value});
  }

  testclick(event) {
    alert("The name entered is: "+ this.state.name);
  }

  render() {
    return (
      <div>
         Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
        <h2>{this.state.name}</h2>
        <input type="button" value="Click Here" onClick={this.testclick} />
      </div>
    );
  }
}

export default EventTest;

W przypadku pól wejściowych musimy zachować stan, dlatego React zapewnia ustaw stan metoda, która pomaga utrzymać stan za każdym razem, gdy następuje jego zmiana.

Wykorzystaliśmy wydarzenia zmieniamy się oraz kliknij na polu tekstowym i przycisku. Gdy użytkownik pisze w polu tekstowym, zmieniamy się wywoływane jest zdarzenie, a pole nazwy wewnątrz obiektu stanu jest aktualizowane, jak pokazano poniżej:

UpdateName(event) {
    this.setState({name: event.target.value});
  }

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import EventTest from './events.jsx';

ReactDOM.render(
    <EventTest />,
    document.getElementById('root')
);

Oto wynik w przeglądarce:

Praca ze zdarzeniami – początkowy wynik w przeglądarce

Gdy użytkownik wprowadzi nazwę:

Praca ze zdarzeniami – nazwa wyświetlana jako typ użytkownika

Gdy użytkownik kliknie przycisk Kliknij tutaj:

Praca ze zdarzeniami – alert wyświetlany po kliknięciu przycisku

Praca z Inline CSS w ReactJS

Gdy komponenty obsługują dane i zdarzenia, ostatnim krokiem jest nadanie im stylu. Przyjrzymy się działającemu przykładowi, aby zrozumieć inline CSS w ReactJS.

addstyle.jsx

import React from 'react';
import ReactDOM from 'react-dom';

const h1Style = {
    color: 'red'
};

function Hello(props) {
    return <h1 style={h1Style}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;

Dodałem styl color: 'red' do tagu h1.

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Dane wyjściowe w przeglądarce są następujące:

Praca z inline CSS – wyjście w kolorze czerwonym

Możesz utworzyć obiekt ze stylem, jaki chcesz zastosować do elementu, i użyć wyrażenia, aby dodać styl, jak pokazano w przykładzie powyżej.

Praca z zewnętrznym CSS w ReactJS

Utwórzmy zewnętrzny plik CSS. W tym celu utwórz folder css/ i dodaj do niego plik style.css.

style.css

.h1tag {
color:red;
}

Dodaj plik style.css do pliku Index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id = "root"></div>
  </body>
</html>

Teraz dodajmy klasę do znacznika h1 w pliku .jsx.

addstyle.jsx

import React from 'react';
import ReactDOM from 'react-dom';

let classforh1 = 'h1tag';

function Hello(props) {
    return <h1 className={classforh1}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;

indeks.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Atrybut className zawiera szczegóły klasy. Należy pamiętać, że JSX używa nazwa klasy zamiast atrybutu klasy HTML, ponieważ klasa jest zarezerwowanym słowem kluczowym w JavaSkrypt. Teraz przetestujmy go w przeglądarce.

Praca z zewnętrznym CSS - wyjście nagłówka w stylu

Oto co zobaczysz po sprawdzeniu znacznika h1 w przeglądarce:

Praca z zewnętrznym CSS - sprawdzono tag h1 pokazujący klasę

Można zobaczyć, że klasa „h1tag” została pomyślnie dodana do znacznika h1.

Dlaczego ReactDOM.render został zastąpiony przez createRoot

Każdy przykład na tej stronie montuje aplikację za pomocą ReactDOM.render, co jest poprawne dla React 16 i 17, wersji, do których skierowany jest ten kurs. React 18, wydany w marcu 2022 roku, zastąpił ten punkt wejścia API createRoot, a React 19 całkowicie usunął ReactDOM.render. Powodem jest współbieżność: createRoot umożliwia Reactowi jednoczesne przygotowanie kilku wersji interfejsu użytkownika, przerwanie renderowania o niskim priorytecie i zachowanie…ping i płynne animacje. Funkcje takie jak automatyczne przetwarzanie wsadowe, useTransition i strumieniowanie oparte na Suspense zależą od tego.

Współczesny odpowiednik pliku index.js używanego na tej stronie wygląda następująco:

import { createRoot } from 'react-dom/client';

const root = createRoot(document.getElementById('root'));
root.render(<h1>Hello, from Guru99 Tutorials!</h1>);

Wszystko inne, czego się tu nauczyłeś — komponenty, JSX, stan, właściwości i zdarzenia — działa tak samo po tej jednolinijkowej zmianie w punkcie wejścia. Różnice w wersjach, takie jak ta, często się pojawiają. Pytania do rozmowy kwalifikacyjnej dotyczące React JSDlatego warto zrozumieć oba API.

FAQ

ReactJS to biblioteka, a nie pełny framework. Skupia się wyłącznie na budowaniu interfejsu użytkownika. Do routingu, pobierania danych i renderowania na serwerze, programiści łączą go z narzędziami takimi jak React Router lub frameworkami takimi jak Next.js.

Z solidnym JavaPodstawy skryptów – większość kursantów opanowuje komponenty, JSX, stan i rekwizyty w ciągu dwóch do czterech tygodni regularnych ćwiczeń. Przygotowanie do pracy, obejmujące hooki, routing i wywołania API, zajmuje zazwyczaj od dwóch do trzech miesięcy tworzenia małych projektów.

ReactJS renderuje do DOM przeglądarki w celu tworzenia witryn, podczas gdy React Native używa tego samego modelu komponentów do tworzenia natywnych witryn dla systemu iOS i Android aplikacje. Umiejętności są przenoszone między nimi, ale React Native zastępuje znaczniki HTML natywnymi komponentami interfejsu użytkownika.

Tak. Asystenci tacy jak Drugi pilot GitHub oraz ChatGPT Potrafisz tworzyć szkielety komponentów, wyjaśniać błędy i konwertować komponenty klas na hooki. Zawsze sprawdzaj wygenerowany kod, ponieważ AI może sugerować przestarzałe API, takie jak ReactDOM.render.

Mało prawdopodobne w najbliższej przyszłości. Sztuczna inteligencja przyspiesza rutynowe kodowanie, ale programiści nadal są potrzebni do projektowania architektury komponentów, zarządzania stanem w aplikacji, sprawdzania dostępności i debugowania problemów produkcyjnych. Nauka Reacta i przepływów pracy wspomaganych przez sztuczną inteligencję zwiększa Twoją wartość, a nie ją zmniejsza.

Sprawdź również: - 70 najpopularniejszych pytań i odpowiedzi podczas rozmowy kwalifikacyjnej React (zaktualizowane)

Podsumuj ten post następująco: