Componenti funzionali

GCGiuseppe Crescitelli

I componenti funzionali sono la forma più utilizzata per creare componenti in React moderno. Sono funzioni JavaScript che ricevono dei parametri in input e restituiscono JSX, cioè la descrizione dell’interfaccia utente da renderizzare.

Un componente funzionale deve sempre iniziare con una lettera maiuscola. React utilizza questa convenzione per distinguere i componenti personalizzati dagli elementi HTML standard.

Esempio di componente funzionale di base:

function Welcome() {
  return <h1>Ciao React</h1>;
}

Questo componente può essere utilizzato all’interno di altri componenti come se fosse un normale tag HTML:

<Welcome />

I componenti funzionali sono semplici, leggibili e favoriscono la composizione dell’interfaccia tramite piccoli blocchi riutilizzabili.

Sintassi con arrow function

Una forma molto comune per definire componenti funzionali è l’uso delle arrow function. Questa sintassi è più compatta ed è diventata uno standard di fatto nello sviluppo React.

Esempio di componente con arrow function:

const Welcome = () => {
  return <h1>Ciao React</h1>;
};

Se il componente restituisce direttamente JSX su una sola riga, è possibile omettere le parentesi graffe e il return:

const Welcome = () => <h1>Ciao React</h1>;

Questa sintassi è particolarmente utile per componenti semplici e migliora la leggibilità del codice.

Props

Le props (properties) sono il meccanismo principale con cui React passa dati da un componente padre a un componente figlio. Le props sono in sola lettura e non devono mai essere modificate direttamente dal componente che le riceve.

Esempio di componente che riceve props:

const Welcome = (props) => {
  return <h1>Ciao {props.name}</h1>;
};

Utilizzo del componente con una prop:

<Welcome name="Giuseppe" />

È molto comune destrutturare le props direttamente nei parametri della funzione per rendere il codice più pulito:

const Welcome = ({ name }) => {
  return <h1>Ciao {name}</h1>;
};

Le props possono essere di qualsiasi tipo JavaScript: stringhe, numeri, booleani, array, oggetti o funzioni.

Default props

I default props permettono di definire valori di default per le props nel caso in cui non vengano passate dal componente padre. Questo evita errori e rende i componenti più robusti.

Esempio di default props:

const Welcome = ({ name }) => {
  return <h1>Ciao {name}</h1>;
};

Welcome.defaultProps = {
  name: "Utente",
};

Se il componente viene utilizzato senza passare la prop name:

<Welcome />

Il valore utilizzato sarà quello di default.

Nei componenti funzionali moderni, spesso i valori di default vengono assegnati direttamente tramite destrutturazione:

const Welcome = ({ name = "Utente" }) => {
  return <h1>Ciao {name}</h1>;
};