ReactJS - Componenti Controllati: Una Guida per Principianti

Ciao a tutti, futuri sviluppatori React! Oggi ci imbarcheremo in un viaggio emozionante nel mondo dei Componenti Controllati in ReactJS. Non preoccupatevi se siete nuovi alla programmazione - sarò il vostro guida amichevole, e prenderemo tutto passo per passo. Alla fine di questo tutorial, sarete in grado di creare moduli come un professionista!

ReactJS - Controlled Component

Cos'è un Componente Controllato?

Prima di immergerci, iniziamo con una semplice analogia. Immagina di essere in un ristorante di lusso e di voler ordinare una pizza personalizzata. In questa situazione, tu (il componente React) sei in controllo di ciò che va sulla pizza (i dati del modulo). Ogni volta che vuoi aggiungere o rimuovere un ingrediente, lo dici al cameriere (lo stato), e lui aggiorna il tuo ordine di conseguenza. Questo è essenzialmente come funzionano i componenti controllati in React!

In termini React, un componente controllato è un elemento di input modulo il cui valore è controllato da React. Invece di lasciare che il DOM gestisca i dati del modulo, React prende il comando.

Perché Usare Componenti Controllati?

  1. unica fonte di verità: Tutti i dati del modulo sono memorizzati nello stato del componente.
  2. accesso immediato all'input: Puoi accedere ai valori degli input subito.
  3. maggiore controllo: Puoi manipolare e validare i dati degli input facilmente.

Ora, mettiamo le mani sporche con un po' di codice!

Componente Controllato con un Singolo Input

Iniziamo con un esempio semplice - un campo di input di testo che saluta l'utente.

import React, { useState } from 'react';

function GreetingInput() {
const [name, setName] = useState('');

const handleChange = (event) => {
setName(event.target.value);
};

return (
<div>
<input type="text" value={name} onChange={handleChange} />
<p>Ciao, {name}!</p>
</div>
);
}

export default GreetingInput;

Spieghiamo questo codice:

  1. Importiamo useState da React per gestire lo stato del nostro componente.
  2. Creiamo una variabile di stato name e la sua funzione di impostazione setName.
  3. La funzione handleChange aggiorna lo stato name ogni volta che l'input cambia.
  4. Nel JSX, impostiamo il valore dell'input su name e colleghiamo l'evento onChange a handleChange.
  5. Mostriamo un saluto utilizzando il valore corrente di name.

Questa è l'essenza di un componente controllato - React controlla il valore dell'input attraverso lo stato.

Prova da Te!

Vai avanti e digita il tuo nome nel campo di input. Nota come il saluto si aggiorna istantaneamente? Questo è la magia dei componenti controllati!

Creazione di un Modulo Semplice

Ora che abbiamo le basi, creiamo un modulo più complesso con più input.

import React, { useState } from 'react';

function PizzaOrderForm() {
const [order, setOrder] = useState({
name: '',
size: 'medium',
toppings: []
});

const handleChange = (event) => {
const { name, value, type, checked } = event.target;

if (type === 'checkbox') {
if (checked) {
setOrder(prevOrder => ({
...prevOrder,
toppings: [...prevOrder.toppings, value]
}));
} else {
setOrder(prevOrder => ({
...prevOrder,
toppings: prevOrder.toppings.filter(topping => topping !== value)
}));
}
} else {
setOrder(prevOrder => ({
...prevOrder,
[name]: value
}));
}
};

const handleSubmit = (event) => {
event.preventDefault();
alert(`Ordine effettuato! Nome: ${order.name}, Dimensione: ${order.size}, Topping: ${order.toppings.join(', ')}`);
};

return (
<form onSubmit={handleSubmit}>
<input
type="text"
name="name"
value={order.name}
onChange={handleChange}
placeholder="Il Tuo Nome"
/>
<select name="size" value={order.size} onChange={handleChange}>
<option value="small">Piccola</option>
<option value="medium">Media</option>
<option value="large">Grande</option>
</select>
<label>
<input
type="checkbox"
name="toppings"
value="formaggio"
checked={order.toppings.includes('formaggio')}
onChange={handleChange}
/>
Formaggio
</label>
<label>
<input
type="checkbox"
name="toppings"
value="pepperoni"
checked={order.toppings.includes('pepperoni')}
onChange={handleChange}
/>
Pepperoni
</label>
<button type="submit">Effettua Ordine</button>
</form>
);
}

export default PizzaOrderForm;

Wow, tanto codice! Ma non preoccupatevi, lo analizzeremo passo per passo:

  1. Creiamo un oggetto di stato order che contiene tutti i dati del nostro modulo.
  2. La funzione handleChange è ora più complessa. Gestisce diversi tipi di input:
  • Per input di testo e select, aggiorna la proprietà corrispondente nello stato.
  • Per i checkbox, aggiunge o rimuove i topping dall'array.
  1. Abbiamo una funzione handleSubmit che impedisce la提交 predefinita del modulo e mostra un alert con i dettagli dell'ordine.
  2. Nel JSX, creiamo input per il nome, la dimensione (come select) e i topping (come checkbox).
  3. Ogni input ha il suo valore (o stato di spunta per i checkbox) controllato dallo stato order.

La Potenza dei Moduli Controllati

Con questa configurazione, hai completo controllo sui dati del tuo modulo. Vuoi aggiungere una validazione? Facile! Modifica la funzione handleChange. Hai bisogno di trasformare i dati prima della提交? Aggiorna la funzione handleSubmit. Le possibilità sono infinite!

Metodi Comuni per i Componenti Controllati

Ecco un riepilogo di alcuni metodi comuni utilizzati con i componenti controllati:

Metodo Descrizione
useState Hook per gestire lo stato del componente
onChange Gestore di eventi per i cambiamenti degli input
onSubmit Gestore di eventi per la提交 del modulo
preventDefault Impedisce il comportamento predefinito della提交 del modulo
event.target.value Recupera il valore corrente di un input
event.target.checked Recupera lo stato di spunta di un checkbox

Conclusione

Congratulazioni! Hai appena imparato sui componenti controllati in React. Abbiamo coperto input singoli, moduli complessi e persino creato un modulo per ordinare una pizza (sto diventando fame solo a pensareci!).

Ricorda, i componenti controllati ti danno il potere di gestire i dati del modulo con precisione. Potrebbe sembrare più lavoro all'inizio, ma il controllo e la flessibilità che guadagni valgono la pena.

Mentre continui il tuo viaggio con React, troverai无数 modi di utilizzare i componenti controllati. Forse creerai un editor di post di blog, un modulo di registrazione utente, o persino un'app per la consegna di pizze (se lo fai, mandami un codice sconto!).

Continua a esercitarti, rimani curioso e buon coding!

Credits: Image by storyset