@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
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
ты каждый раз создаёшь новые Идентификаторы для атрибута key, а надо использовать сквозные через все запросы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы