Implementare interfață utilizator
1. Curățarea fișierului de stiluri
Mergem în tailwind.config.js și lăsăm doar liniile de configurare pentru tailwind.
// tailwind.config.js
@tailwind base;
@tailwind components;
@tailwind utilities;2. Crearea fișierului de metode pentru manipularea entry-urilor
O să ne deplasăm în folderul utils și o să creăm un nou fișier numit recordsFunctions.js.
În acest fișier, o să apelăm toate rutele create în pașii anteriori din fișierul records.js.
// /utils/recordsFunctions.js
export const getRecords = async () => {
try {
const response = await fetch("/api/records", {
method: "GET",
});
const data = await response.json();
if (!data?.data) {
return [];
}
return data.data;
} catch (error) {
console.error(error);
}
}
export const getRecordById = async (id) => {
try {
const response = await fetch(`/api/records?id=${id}`, {
method: "GET",
});
const data = await response.json();
if (!data?.data) {
return null;
}
return data.data;
} catch (error) {
console.error(error);
}
}
export const createRecord = async (record) => {
try {
delete record._id;
const response = await fetch("/api/records", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(record),
});
const data = await response.json();
if (!data?.data) {
return null;
}
return data.data;
} catch (error) {
console.error(error);
}
}
export const updateRecord = async (record) => {
try {
const response = await fetch("/api/records", {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(record),
});
const data = await response.json();
if (!data?.data) {
return null;
}
return data.data;
} catch (error) {
console.error(error);
}
}
export const deleteRecord = async (id) => {
try {
const response = await fetch(`/api/records?id=${id}`, {
method: "DELETE",
});
const data = await response.json();
if (!data?.data) {
return null;
}
return data.data;
} catch (error) {
console.error(error);
}
}3. Pagina princpală
O să creăm un nou folder care o să se numească components, și înăuntrul lui o să adăugăm un fișier care se va numi MainPage.jsx.

Mergem în fișierul de index.js din folderul pages, ștergem tot conținutul return-ului și chemăm componenta de MainPage.jsx.
După efectuarea tuturor acestor modificări, începem să modificăm pagina MainPage.jsx și să o facem să ceară de la baza de date toate înregistrările din tabela records, și să le mapăm sub formă de carduri, oferind posibilitatea utilizatorilor să apese pe butonul de editare sau de ștergere a unui entry.
4. Crearea unui entry
Pentru crearea unui nou entry, o să ne mutăm în folderul pages și o să creăm un nou folder numit records cu un fișier create.jsx.
După cum putem vedea, am creat un entry pe baza unui template și o metodă de submit (callback function), pe care le-am pasat către altă componentă sub formă de PROPS.
Pentru a crea respectivul template de entry, o să ne mutăm în folderul utils, și o să creăm fișierul constants.js.
Pentru crearea formularului, o să ne mutăm în folderul components și o să creăm fișierul RecordForm.jsx.
5. Editarea unui entry
Ne mutăm în folderul records din pages și adăugăm o nouă componentă, numită edit.jsx.
Pentru crearea Spinner-ului, o să mergem în folderul components și o să creăm un fișier numit Spinner.jsx.
Last updated