Usando useEffect di React come un professionista

Ehi ragazzi, in questa procedura dettagliata vi mostrerò tutto ciò che dovete sapere per utilizzare la funzione useEffect di React come un professionista.

Una breve storia

Prima che esistesse useEffect , esistevano metodi del ciclo di vita, vale a dire:

  1. componenteDidMount
  2. componenteDidUpdate
  3. componenteWillUnmount

componentDidUpdate(prevProps, prevState) {
  if (prevProps.foo !== this.props.foo) {/* do something */} 
  if (prevState.bar !== this.state.bar)  {/* do something else */}
}

Con questi metodi del ciclo di vita, possiamo gestire in modo affidabile qualsiasi modifica allo stato del componente, quindi perché la modifica di useEffect ?

Inserisci React Stateless Components

Ad un certo punto (credo già nel 2016), il team di React ha preso la decisione di creare componenti React che possono essere istanziati solo con una normale funzione Javascript vecchia scuola. Così:

import React from "react";
function MyFunc() {
  return <div>Hey!</div>
}

Inserisci React.useEffect

Il nuovo approccio per gestire i cambiamenti di stato è arrivato sotto forma di una funzione useEffect esposta dalla libreria React. Quindi, come ricreare i nostri amati metodi componentDidMount , componentDidUpdate e componentWillUnmount ? Espandiamo la nostra precedente funzione stateless:

import React from "react";
function MyFunc(props) {
const [bar setBar] = React.useState(null);
  
  React.useEffect(() => {
    console.log("componentDidMount");
    return () => {
      console.log("componentDidUnmount")
    }
  }, []);
  
  React.useEffect(() => {
    console.log("componentDidUpdate when 'bar' changes");
  }, [bar]);
React.useEffect(() => {
    console.log("componentDidUpdate when 'props.foo' changes");
  }, [props.foo]);
return <div>Hey!</div>
}

Un'altra cosa che abbiamo aggiunto a questo esempio, React.useState, un hook di stato, non rientra nell'ambito di questo tutorial, ma scopri di più qui !

Andare oltre la gestione del ciclo di vita

È fantastico poter gestire lo stato di un componente così come con i precedenti metodi del ciclo di vita. Tra la semplicità e la riutilizzabilità delle funzioni stateless, e la funzione React.useEffect, è diventato disponibile un nuovo paradigma: le funzioni stateful riutilizzabili, o più comunemente denominate: hook personalizzati .

Un lettore esperto come te probabilmente ha notato che con useEffect non possiamo accedere alla proprietà prevProps o prevState come prima. Non aver paura! Leggi la soluzione per questo qui . Il motivo per cui questa soluzione funziona è perché React.useRef non attiva il re-render del componente. Inoltre, useEffect senza dipendenze si attiva ogni volta che viene eseguito un nuovo rendering del componente, indipendentemente dal cambiamento di stato che l'ha attivato.

Ciao ganci personalizzati

Non c'è davvero nessun esempio di base migliore per un hook personalizzato di quello che React condivide nella loro documentazione ufficiale qui . Iniziamo dalla parte inferiore dell'esempio e procediamo verso l'alto:

function FriendListItem(props) {
  const isOnline = useFriendStatus(props.friend.id);
  return (
    <li style={{ color: isOnline ? 'green' : 'black' }}>
      {props.friend.name}
    </li>
  );
}

import React, { useState, useEffect } from 'react';

function useFriendStatus(friendID) {
  const [isOnline, setIsOnline] = useState(null);

  function handleStatusChange(status) {
    setIsOnline(status.isOnline);
  }

  useEffect(() => {
    ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
    return () => {
      ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
    };
  });

  return isOnline;
}

Conclusione

In questo tutorial, abbiamo esaminato:

  1. Come abbiamo gestito il ciclo di vita di un componente prima di useEffect e perché questo approccio è diventato obsoleto
  2. Come possiamo usare useEffect per gestire efficacemente il ciclo di vita di un componente
  3. Come possiamo sfruttare la riutilizzabilità delle funzioni stateless di React e useEffect per creare funzioni stateful riutilizzabili.

Suggested posts

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Introduzione Un ictus è un'emergenza medica che può colpire chiunque in qualsiasi momento. Si verifica quando il flusso sanguigno verso una parte del cervello viene interrotto, portando a un'improvvisa perdita della funzione cerebrale.

La rivoluzione senza codice: scatenare la prosperità aziendale con Webflow, Framer, Bubble.io,

La rivoluzione senza codice: scatenare la prosperità aziendale con Webflow, Framer, Bubble.io,

Intraprendi un entusiasmante viaggio di innovazione e successo mentre attingi al potenziale inutilizzato di queste sorprendenti piattaforme senza codice. Permettetemi di condividere con voi una storia su Sapna, una straordinaria donna imprenditrice.

Related posts

VITA SENZA LIMITI

Quando cresci tendi a sentirti dire che il mondo è così com'è e che la tua vita è vivere la tua vita dentro il mondo, senza mai rischiare la vita, basta seguire un percorso prestabilito e morire alla fine, e cercare di non farlo sfondare troppo i muri. Ma questa è una vita molto limitata.

Niente più password: come le passkey sostituiranno la tua password

Niente più password: come le passkey sostituiranno la tua password

Per evitare ambiguità verranno utilizzati i seguenti termini; Autenticatore; Il telefono cellulare utilizzato per effettuare il login Sito web; Il sito Web o l'applicazione che l'utente sta utilizzando per effettuare la richiesta di accesso al Servizio; Il fornitore che fornisce il servizio dato, ad es

Finanziare la rimozione del carbonio nell'anno fiscale 24

La ripartizione delle richieste di stanziamenti di Carbon180 in tutti i percorsi

Finanziare la rimozione del carbonio nell'anno fiscale 24

Di Alyson Lee, consulente per gli affari governativi Il processo di stanziamento annuale del governo federale è fondamentale per i nostri sforzi per finanziare la rimozione dell'anidride carbonica (CDR). Ogni anno, Carbon180 invia richieste a vari uffici congressuali per aiutare a guidare dove fluiranno i dollari del prossimo anno.

L'assassinio di Jordan Neely e il problema del razzismo "patriottico".

Gli Stati Uniti possono fare il passo essenziale per non equiparare il comportamento razzista all'essere un buon americano?

L'assassinio di Jordan Neely e il problema del razzismo "patriottico".

[Avviso di attivazione: questo saggio include schermate di persone che elogiano l'assassino di Jordan Neely.] I funzionari delle forze dell'ordine hanno finalmente - e forse con riluttanza - accusato Daniel Penny, l'uomo che ha soffocato Jordan Neely fino alla sua morte, per quell'omicidio.