Przy każdym naciśnięciu przycisku "Wygeneruj inne dane"
const data = await loadData();
pobierasz ponownie plik dane.txt i ponownie wykonuje się kod
text.split('\n').filter(line => line.trim() !== '')
// i
dataLines.map(line => {
const [name, dob, pesel, address, city, email, phone] = line.split(',').map(item => item.trim());
return { name, dob, pesel, address: `${address}, ${city}`, email, phone };
});
proponuje przepisać kod tak, aby tylko raz plik dane.txt był pobierany z serwera zaraz po załadowaniu strony, a każde kolejne naciśnięcie przycisku "Wygeneruj inne dane", losowało kolejny zestaw z utworzonej wcześniej tablicy.
No i dopisz walidację czy plik dane.txt w ogóle prawidłowo się pobrał (np. użyj If-a lub bloku try ... catch)
BTW, proponuje całe generowanie zestawu danych zrobić w backend-dzie, a przycisk "Wygeneruj inne dane" pobierał by (tu fetch) tylko gotowego json-a z danymi do prezentacji na stronie.