Qualunque sia il framework che usiamo per creare applicazioni, la gestione di una form in HTML passa attraverso l'uso di una serie di componenti predefiniti come input, select, textarea. Fatta eccezione per il tag input con l'attributo type impostato su file, quest componenti vengono definiti controlled component in quanto mantengono internamente il loro stato e permettono di leggerlo e impostarlo tramite codice.
Quando un controlled component cambia il proprio stato a seguito di un'interazione dell'utente, è nostro compito intercettare il nuovo stato e salvarlo nello stato del componente. Allo stesso modo, quando il valore nello stato del componente cambia, è nostro compito modificare lo stato del controlled component.
Nel prossimo esempio mettiamo in pratica quanto detto.
class MyFormComponent extends React.Component {
constructor(props) {
super(props);
this.state = { text: '' };
}
handleChange(event) {
this.setState({ text: event.target.value });
}
handleSubmit(event) {
alert('submitted');
}
render() {
return (
<form onSubmit={this.handleSubmit.bind(this)}>
<input type="text" value={this.state.text} onChange={this.handleChange.bind(this)}/>
<input type="submit" value="Submit" />
</form>
);
}
}In questo esempio, abbiamo una form al cui submit (onSubmit) viene invocato il metodo handleSubmit. all'interno della form c'è un tag input che rappresenta il nostro controlled component e al cui cambio (onChange) invochiamo il metodo handleChange (che modifica lo stato del componente col nuovo valore). Al tempo stesso, mettiamo in binding lo stato dell'input con lo stato del component.
In questo caso abbiamo visto il tag input, ma anche i tag select e textarea sfruttano esattamente lo stesso evento (onchange) e la stessa proprietà (value) per sincronizzarsi con lo stato del component.
Quando abbiamo molti controlled component, la quantità di codice da scrivere diventa notevole. Nel prossimo script vedremo come diminuire il codice da scrivere.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Running workloads and operations with Azure Kubernetes Service
Introduzione a GitHub Copilot CLI
Semplificare i deployment con le label in Azure Container App
Ricerca delle GitHub issue tramite operatori logici
Come automatizzare il download dei report di billing da GitHub Enterprise
How to be a DevOps engineer in the AI era
Rendere affidabile lo scale out su Azure App Service
Personalizzare le pagine di errore su Azure App Service
Utilizzare le librerie native di .NET per decomprimere un file zip
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Evitare la compressione degli artefatti in un workflow di GitHub
Referenziare un package NuGet in una file based app .NET
I più letti di oggi
- Effettuare un ping da una pagina ASP
- Upload e scompattamento di un allegato ZIP
- Microsoft Security Bulletin MS02-042
- Effettuare query sulle date con Access
- Un'alternativa all'uso di Stream per la lettura di file binari: TextStream di FSO
- Utilizzare al meglio le variabili Application
- Visualizzare e colorare il codice sorgente di una pagina ASP
- Un sondaggio con XML


