В настоящее время fetchData()
передает обратно CSV-блоками (всего 3500 элементов), поэтому я использовал .then
, чтобы дождаться его завершения, чтобы передать его в функцию papaparse. Тем не менее, в моей консоли я вижу, что он перемещается на getArtist
, прежде чем обещание будет выполнено. Таким образом, массив, переданный обратно объекту, является только частью файла CSV, а не целым.
import React from 'react';
import Papa from 'papaparse';
export default function GetData(artist) {
const object = fetchCsv().then(object => Papa.parse(object));
console.log(object);
const tateArtist = getArtist(artist, object);
console.log(tateArtist);
return tateArtist;
}
async function fetchCsv() {
const response = await fetch('data/artist_data.csv');
const reader = response.body.getReader();
const result = await reader.read();
const decoder = new TextDecoder('utf-8');
const csv = await decoder.decode(result.value);
return csv;
}
async function getArtist(artist, data){
const artistName = artist.split(" ");
var artistData = "Error";
for(const item of data.data){
if(item[1].includes(artistName[0]) && item[1].includes(artistName[artistName.length-1])){
return item;
}
}
return artistData;
}
Я попытался обернуть строку, используя useEffect
, но вместо этого получил ошибку о неправильном использовании.
export default function GetData(artist) {
const [data, setData] = useState(null);
useEffect(() => {
fetchCsv().then(object => Papa.parse(object)).then(response => setData(response));
}, [])