Az előző bejegyzés funkcionális összetevőjével ellentétben ("React basic 3 — Reusable Functional Components"), ha az összetevő megfelelően kezeli az állapotokat, az class komponens lehet a megfelelő út. Az Class összetevő beépített életciklusa-val rendelkezik, amely lehetővé teszi az összetevő különböző fázisokban történő kezelését. Ez a bejegyzés elmagyarázza, hogyan lehet osztályalapú összetevőt létrehozni úgy, hogy először a legalapvetőbb constructor() és render() életciklus metódusokat tekintjük át.

Hozza létre az első osztály alapú összetevőt

1. lépés: Osztály deklarálása és React.Component kiterjesztése

Az osztályalapú komponens szerkezete hasonló a funkcionális komponenséhez. A funkcionális komponensek const kifejezése helyett a React.Component alosztályt kiterjesztjük egy osztály deklarálására. Az alábbiakban egy példa látható arra, hogyan lehet egy egyszerű funkcionális komponenst osztályalapú komponenssé átalakítani.

Funkcionális komponens

const App = () => {
   return(
      <h1>Hello!</h1>
   );
};

Osztályalapú komponens

class App extends React.Component {
   render() {
      return (
         <h1>Hello!</h1>
      );
   }
};

2. lépés: Constructor() és render() életciklus metódusok

Ahogy a fenti példában látható, meg kell hívnunk a render() metódust a felhasználói felület megjelenítéséhez. A A render() az életciklus metódusok egyike, amely többször is meghívásra kerül, ha az osztály állapota megváltozna.Ezzel szemben használhategy konstruktort () metódus az osztály inicializálásához. Például, amikor hozzáfér egy külső adathoz, csak egyszer kell meghívnia, amikor az osztály inicializálódik, így ezeknek a visszahívásoknak a a constructor()-ban kell megtörténniük.

class App extends React.Component {
   constructor(props) {
      super(props); // you need this with props!
      // Call a function that only needs first 
   }
   render() {
      return (<h1>Hello!</h1>);
   }
};

3. lépés Állítsa be és frissítse az állapotot

Miután adatokat kért a constructor()-tól,eltarthat egy ideig, amíg az adatok elérhetővé válnak, vagy az adatok frissülhetnek, miközben a felhasználó még mindig az oldalát nézi. Ha az adatok egy idő után rendelkezésre állnak, vagy frissülnek, érdemes lehet ezeket a változtatásokat tükrözni az oldalon. E fázisok kezelésére az state funkciót használjuk a React osztályban.

Az Állapot egy olyan objektum, amely rögzíti a felhasználók helyi állapotát. 1) Állapot deklarálhat a constructor()-ban, ha kimondja: this.state={key:value}, 2) elérheti az állapotot a this.state.key paraméterrel, és 3) frissítheti az állapotot a this.setState={key:newValue} paraméterrel.

Az alábbi példa az Udemy tanfolyam-ból származik, amely ellenőrzi a felhasználó helyét a constructor()-ban, dea visszahívás időbe telik, mivel a felhasználónak engedélyeznie kell a böngészőbeállítást. Amíg az adatok nem állnak rendelkezésre, az oldal a betöltés állapotát mutatja. Amikor a felhasználó engedélyezi vagy megtagadja a helyhozzáférést, a React state a .setState értékkel frissül, és az render() metódus újra lefut.

class App extends React.Component {
   constructor(props) {
      super(props);
      this.state = { lat: null };
      window.navigator.geolocation.getCurrentPosition( 
         position => {
            this.setState ({ lat: position.coords.latitude });
         },
         err => {
            this.setState ({ errorMessage: err.message });
         }
      );
   }
   render() {
      return (
         <div> { this.renderContent() } </div>
      )
   }
   renderContent() {
      if(this.state.errorMessage && !this.state.lat){
         return (
            <div> Error: { this.state.errorMessage } </div>
         )
      }
      if(!this.state.errorMessage && this.state.lat){
         return (
            <div> Latitude: {this.state.lat} </div>
         )
      }
      return( <div> Loading … </div> );
   }
}

Életciklus módszerek

  • constructor() – Inicializáló változók vagy állapotok deklarálásához.
  • componentDidMount()Az összetevő megjelenítése után hívják meg. A kezdeti adatkérés ebben a metódusban hívható meg a constructor(). helyett
  • render()KÖTELEZŐ metódus, amely HTML-kódot ad ki a DOM-ba.
  • componentDidUpdate()Az összetevő DOM-ban való frissítése után hívódik meg.
    componentWillUnmount()
    Akkor hívják meg, amikor az összetevőt eltávolítják a DOM-ból.

Tartalomjegyzék

„React basic 1 – „Hello React World”. A First React alkalmazás beállítása»

React basic 2 – JSX, a JavaScript szintaxis-kiterjesztése, amely úgy néz ki, mint a HTML

React basic 3 – Újrafelhasználható funkcionális alkatrészek

React basic 4 – Osztály alapú komponensek és életciklus-módszerek

React basic 5 — Basic Event Handlers

React basic 6 – Az Axios Library használata az adatok lekéréséhez

React basic 7 – Lista megjelenítése az API-válasz alapján

„React basic 8 – React alkalmazás létrehozása és a szerveren való tárolása”

Referencia

Modern React Redux segítségével, Stephen Grider | Udemy

Az alkatrészek életciklusa | W3School