Задать вопрос
@mrrangerr

Как предотвратить перерендеринг при загрузке новых данных?

Всем привет, делаю фотоприложение где на главной странице с помощью библиотеки ReactInfiniteScroll загружаю бесконечный список фотографий. Каждый раз когда дохожу до конца страницы загружается новый список фотографий и происходит перерендер страницы. Как это предотвратить?

function Test() {
    const [photos, setPhotos] = useState([])
    const [perPage, setPerpage] = useState(1)

    const getData = useCallback(() => {
        unsplash.photos
            .listPhotos(perPage, 15, "latest")
            .then(toJson)
            .then(json => {
                setPhotos([...photos, ...json])
                setPerpage(perPage + 1)
            })
    }, [photos, perPage])

    useEffect(() => {
        getData()
    }, [])

   
    const styles = {
        padding: "15px"
    }

    const childElements = photos.map(photo => (
        <li className="list-unstyled" key={uuidv4()}>
            <Link to={`/${photo.id}`} key={uuidv4()} >
                <img className="rounded" style={styles} src={photo.urls.small} alt={photo.description}></img>
            </Link>
        </li>
    ))

    return (
        <div>
            <InfiniteScroll dataLength={photos.length}
                next={getData}
                hasMore={true}
                loader={<img src="loader.png" alt="loader"></img>}
            >
                <Masonry elementType={"ul"}>
                    {childElements}
                </Masonry>
            </InfiniteScroll>
        </div>
    )
}

export default Test
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
ты каждый раз создаёшь новые Идентификаторы для атрибута key, а надо использовать сквозные через все запросы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:50
7000 руб./за проект
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект