Я пытаюсь реализовать поисковый фильтр в этом мини-приложении, используя API стран. Тем не менее, я получил сообщение об ошибке filter
не является функцией.
Теперь я думаю, что это потому, что данные должны быть массивом, чтобы filter()
работал. Я не уверен, как я смогу получить доступ к данным для поиска.
Изо всех сил пытаюсь обернуть голову вокруг этого.
Пример response.data из моего console.log
{data: Array(250), status: 200, statusText: "", headers: {…}, config: {…}, …}
data: Array(250)
[0 … 99]
0:
name: "Afghanistan"
topLevelDomain: [".af"]
alpha2Code: "AF"
alpha3Code: "AFG"
callingCodes: ["93"]
capital: "Kabul"
altSpellings: (2) ["AF", "Afġānistān"]
region: "Asia"
subregion: "Southern Asia"
population: 27657145
latlng: (2) [33, 65]
demonym: "Afghan"
area: 652230
gini: 27.8
timezones: ["UTC+04:30"]
А вот моя функция фильтра, которая отображает ошибку
const Homepage = () => {
const [countries, setCountries] = useState('');
const [searchedCountry, setSearchedCountry] = useState('');
useEffect(() => {
console.log('effect');
axios.get(`https://restcountries.eu/rest/v2/all`).then((response) => {
console.log(response, 'promise fulfiled');
setCountries(response.data);
});
}, []);
const handleSearch = (event) => {
setSearchedCountry(event.target.value);
};
// Filter function
const filteredCountries = countries.filter((country) =>
country.name.toLowerCase().includes(searchedCountry.toLowerCase())
);
return (
<div className='homepage'>
<input type='text' onChange={handleSearch} />
<CountryList countries={countries} />
</div>
);
};
Было бы здорово понять это подробнее. Спасибо.