Как я могу установить для свойства-заполнителя response-lazyload значение none, когда оно достигает конца массива?
Я использую библиотеку response-lazyload для своего проекта response js.
import LazyLoad from 'react-lazyload';
Сначала я получаю данные с помощью useEffect:
const [ stuff, setStuff ] = React.useState(null);
React.useEffect(() => {
Axios.get('https://jsonplaceholder.typicode.com/posts')
.then((res) => setStuff(res.data))
.catch((err) => console.log(err.message));
}, []);
Затем я отображаю массив материалов с помощью lazyload, и он отлично работает:
{stuff ? (
stuff.map((each) => {
return (
<LazyLoad
offset={[ -100, 100 ]}
placeholder={<h2>loading...</h2>}
key={each.id}
>
<h3 style={{ margin: 20 }}>{each.title}</h3>
<LazyLoad once={true} placeholder={`https://picsum.photos/id/${each.id}/5/5`}>
<img
data-aos-duration="2000"
data-aos="fade"
src={`https://picsum.photos/id/${each.id}/200/200`}
/>
</LazyLoad>
</LazyLoad>
);
})
) : null}
Итак, сначала он отображает подставку для каждого элемента, который
загрузка...
а при прокрутке вниз отображается фактический элемент.Единственная проблема заключается в том, что он не знает, когда элементы завершены, и нет элементов для отображения, поэтому, когда вы дойдете до конца экрана и элементы будут завершены, он все равно покажет
загрузка...
.Как я могу определить длину массива материала, чтобы он не отображал загружаемый объект, когда он достигает конца массива?
1 ответ
Решение
Я исправил проблему, добавив высоту и ширину 100 пикселей к тегам с загружаемым текстом внутри.