ReactJS - Formik: Creazione di un Modulo di Spese
Ciao a tutti, futuri sviluppatori React! Oggi ci imbarcheremo in un viaggio emozionante nel mondo della gestione dei moduli in React utilizzando una fantastica libreria chiamata Formik. Alla fine di questo tutorial, sarete in grado di creare moduli slick ed efficienti come un professionista. Allora, entriamo nel dettaglio!
Cos'è Formik?
Prima di iniziare a codificare, capiremo cos'è Formik e perché è un vero game-changer nello sviluppo React.
Formik è una libreria popolare che semplifica la gestione dei moduli nelle applicazioni React. Si occupa delle parti noiose dei moduli come la gestione dello stato del modulo, la validazione e l'invio, permettendovi di concentrarvi su ciò che è più importante - la logica della vostra applicazione.
Pensate a Formik come al vostro assistente personale per i moduli. Proprio come un buon assistente si occuperebbe di tutta la carta per voi, Formik gestisce tutte le attività relative ai moduli, lasciandovi liberi di concentrarvi sulla grande immagine.
Configurazione del Nostro Progetto
Prima di tutto, configuriamo il nostro progetto. Presumeremo che abbiate già installato Node.js sul vostro computer. Se non è così, installatelo dal sito ufficiale di Node.js.
Aprite il terminale e eseguite i seguenti comandi:
npx create-react-app expense-form-app
cd expense-form-app
npm install formik yup
npm start
Questi comandi creano una nuova applicazione React, installano Formik e Yup (una libreria per la validazione dei moduli) e avviano il server di sviluppo.
Creazione del Nostro Modulo di Spese
Ora che abbiamo configurato il nostro progetto, creiamo il nostro modulo di spese. Costruiremo un modulo semplice che permette agli utenti di inserire una descrizione della spesa e l'importo.
Passo 1: Struttura di Base del Modulo
Iniziamo creando una struttura di base del modulo. Aprite il file src/App.js
e sostituite il suo contenuto con il seguente codice:
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
function App() {
return (
<div className="App">
<h1>Modulo di Spese</h1>
<Formik
initialValues={{ description: '', amount: '' }}
onSubmit={(values, { setSubmitting }) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
setSubmitting(false);
}, 400);
}}
>
{({ isSubmitting }) => (
<Form>
<div>
<label htmlFor="description">Descrizione</label>
<Field type="text" name="description" />
<ErrorMessage name="description" component="div" />
</div>
<div>
<label htmlFor="amount">Importo</label>
<Field type="number" name="amount" />
<ErrorMessage name="amount" component="div" />
</div>
<button type="submit" disabled={isSubmitting}>
Invia
</button>
</Form>
)}
</Formik>
</div>
);
}
export default App;
Ecco cosa sta succedendo qui:
- Importiamo i componenti necessari da Formik.
- Creiamo un componente
Formik
che avvolge il nostro modulo. - Impostiamo i
initialValues
per i campi del nostro modulo. - Definiamo una funzione
onSubmit
che gestisce l'invio del modulo. - Utilizziamo i componenti
Form
,Field
, eErrorMessage
di Formik per creare la struttura del nostro modulo.
Passo 2: Aggiunta della Validazione
Ora aggiungiamo della validazione al nostro modulo. Useremo Yup per questo. Aggiornate il file App.js
come segue:
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';
const ExpenseSchema = Yup.object().shape({
description: Yup.string()
.min(2, 'Troppo Corto!')
.max(50, 'Troppo Lungo!')
.required('Obbligatorio'),
amount: Yup.number()
.positive('Deve essere positivo')
.required('Obbligatorio'),
});
function App() {
return (
<div className="App">
<h1>Modulo di Spese</h1>
<Formik
initialValues={{ description: '', amount: '' }}
validationSchema={ExpenseSchema}
onSubmit={(values, { setSubmitting }) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
setSubmitting(false);
}, 400);
}}
>
{({ isSubmitting }) => (
<Form>
<div>
<label htmlFor="description">Descrizione</label>
<Field type="text" name="description" />
<ErrorMessage name="description" component="div" />
</div>
<div>
<label htmlFor="amount">Importo</label>
<Field type="number" name="amount" />
<ErrorMessage name="amount" component="div" />
</div>
<button type="submit" disabled={isSubmitting}>
Invia
</button>
</Form>
)}
</Formik>
</div>
);
}
export default App;
Ecco cosa abbiamo aggiunto:
- Importiamo Yup e definiamo uno schema di validazione (
ExpenseSchema
). - Aggiungiamo la proprietà
validationSchema
al nostro componenteFormik
.
Ora il nostro modulo eseguirà la validazione prima dell'invio!
Passo 3: Stile del Nostro Modulo
Aggiungiamo un po' di stile per rendere il nostro modulo più gradevole. Create un nuovo file chiamato App.css
nella cartella src
e aggiungete il seguente CSS:
.App {
font-family: Arial, sans-serif;
max-width: 400px;
margin: 0 auto;
padding: 20px;
}
h1 {
color: #333;
}
form {
display: flex;
flex-direction: column;
}
div {
margin-bottom: 15px;
}
label {
margin-bottom: 5px;
display: block;
}
input {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
background-color: #4CAF50;
color: white;
padding: 10px;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:disabled {
background-color: #ddd;
}
.error {
color: red;
font-size: 0.8em;
}
Ora, aggiornate il file App.js
per importare questo file CSS:
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';
import './App.css';
// ... il resto del codice rimane lo stesso
Conclusione
Complimenti! Avete appena costruito un modulo di spese funzionale utilizzando Formik e React. Questo è solo l'inizio di ciò che potete fare con Formik. Mentre continuate il vostro viaggio in React, scoprirete che Formik è uno strumento invaluable per la gestione dei moduli di tutte le complessità.
Ricordate, la pratica fa perfezione. Provate a modificare questo modulo, aggiungere nuovi campi, o creare moduli completamente nuovi utilizzando ciò che avete imparato. Il mondo dello sviluppo React è vasto ed emozionante, e siete ben sulla strada per diventare parte di esso!
Buon codice, e possa i vostri moduli sempre validare senza problemi! ?
Tabella dei Metodi Formik
Ecco una tabella di alcuni metodi Formik comunemente utilizzati:
Metodo | Descrizione |
---|---|
handleSubmit |
Gestisce l'invio del modulo |
handleChange |
Gestisce i cambiamenti nei campi del modulo |
handleBlur |
Gestisce quando un campo perde il fuoco |
setFieldValue |
Imposta manualmente il valore di un campo |
setFieldTouched |
Imposta manualmente lo stato toccato di un campo |
validateForm |
Esegue manualmente la validazione del modulo |
resetForm |
Resetta il modulo ai suoi valori iniziali |
setErrors |
Imposta manualmente gli errori del modulo |
setStatus |
Imposta un oggetto di stato di livello superiore |
setSubmitting |
Imposta lo stato di invio del modulo |
Questi metodi vi forniscono un controllo fine sul comportamento e lo stato del vostro modulo. Man mano che vi sentite più a vostro agio con Formik, vi troverete a utilizzare questi metodi per creare moduli più complessi e interattivi.
Credits: Image by storyset