#javascript #reactjs #jsx
Вопрос:
Я попытался деструктурировать только нужные мне реквизиты из состояния, используемого для хранения данных JSON, а затем использовать состояние для значения счетчика, чтобы у меня было несколько кнопок next/prev и одновременно отображалось только 1 изображение (используя в качестве индекса для массива значение счетчика, следовательно, это будет 1 элемент за раз, а кнопки next/prev будут увеличиваться/уменьшаться на 1 ). Я сделал это в предыдущем проекте, и это сработало, но по какой-то причине сейчас этого не происходит.
Есть какие-нибудь идеи, почему они не работают, или, возможно, какое-то представление о другом подходе ?
импортируйте React, { useEffect, useState } из «react»; импортируйте загрузку из «./загрузка»;
const key = "#!$!#$!#$#!$!#$#!#$!$#!$!#$!$#!$";
const url = `https://api.unsplash.com/photos/?client_id=${key}`;
console.log(url);
//main Component
function App() {
//states
const [loading, setLoading] = useState(true);
const [images, setImages] = useState([]);
const [counter, setCounter] = useState(0);
const fetchImages = async () => {
setLoading(true);
try {
const response = await fetch(url);
const image = await response.json();
setLoading(false);
setImages(image);
} catch (error) {
console.log(error);
setLoading(true);
}
};
useEffect(() => {
fetchImages();
}, [url]);
//loading
if (loading) {
return (
<main>
<Loading></Loading>
</main>
);
}
//primary return
const { id, created_at, description, urls } = images[counter];
return (
<main>
{urls.map((image) => {
return <img src={image.full}></img>;
})}
</main>
);
}
export default App;
Комментарии:
1. Вы уверены, что ваш ответ возвращает данные и что это массив?
2. Да, я прокомментировал строку, в которой я разрушил, а также все в основном, обновил приложение и добавил console.log(изображения), и оно возвращает массив из 10 объектов. Затем, если я раскомментирую строку деструкции, это сработает, но если я снова попытаюсь сопоставить URL-адреса, я получу ошибку типа: url-адреса.карта не является функцией, и если я снова обновлю приложение, начальная ошибка и журнал консоли теперь показывают пустой массив. Может быть, что-то не так с асинхронным кодом ?
3. Вот как выглядит json : (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] (не могу вставить все это, потому что это слишком долго, но в основном внутри каждого объекта есть пара других объектов, одним из которых являются URL-адреса)