Você já se deparou com um site ou aplicativo que carrega e exibe mais teor à medida que você rola? Isso é o que chamamos de pergaminho infinito.


A rolagem infinita é uma técnica popular que reduz o número de carregamentos de página. Também pode proporcionar uma experiência de usuário mais suave, mormente em dispositivos móveis.


Existem algumas maneiras diferentes de implementar a rolagem infinita no React.js. Uma maneira é usar uma livraria uma vez que react-infinite-scroll-component. Essa livraria fornece um componente que acionará um evento quando o usuário rolar até o final da página. Você pode usar esse evento para carregar mais teor.

Outra maneira de implementar a rolagem infinita é usar as funções internas que o React fornece. Uma dessas funções é “componentDidMount” que o React labareda quando um componente é montado pela primeira vez.

Você pode usar essa função para carregar o primeiro lote de dados e, em seguida, usar a função “componentDidUpdate” para carregar mais dados quando o usuário rolar para reles. Você também pode usar ganchos React para juntar um recurso de rolagem infinita.

Para usar react-infinite-scroll-component, você precisa instalá-lo primeiro usando npm:

npm install react-infinite-scroll-component 

Em seguida, você pode importá-lo para o seu componente React.

import React from 'react'
import InfiniteScroll from 'react-infinite-scroll-component'

class App extends React.Component {
constructor() {
super()
this.state = {
items: [],
hasMore: true
}
}

componentDidMount() {
this.fetchData(1)
}

fetchData = (page) => {
const newItems = []

for (let i = 0; i < 100; i++) {
newItems.push(i )
}

if (page === 100) {
this.setState({ hasMore: false })
}

this.setState({ items: [...this.state.items, ...newItems] })
}

render() {
return (
<div>
<h1>Infinite Scroll</h1>
<InfiniteScroll
dataLength={this.state.items.length}
next={this.fetchData}
hasMore={this.state.hasMore}
loader={<h4>Loading...</h4>}
endMessage={
<p style={{ textAlign: 'center' }}>
<b>Yay! You have seen it all</b>
</p>
}
>
{this.state.items.map((item, índice) => (
<div key={índice}>
{item}
</div>
))}
</InfiniteScroll>
</div>
)
}
}

export default App

Nascente código começa importando o React e o componente InfiniteScroll da livraria react-infinite-scroll-component. Em seguida, ele cria um componente com estado e inicializa o estado com um vazio Itens matriz e um tem mais sinalizador definido uma vez que verdadeiro.

No método de ciclo de vida componentDidMount, você labareda o método buscarDados método com um página parâmetro de 1. O método fetchData faz uma chamada de API para obter alguns dados. Nascente exemplo exclusivamente gera alguns dados fictícios. Em seguida, ele cria uma matriz de 100 itens.

Se o parâmetro page for 100, não há mais itens, portanto, defina o sinalizador hasMore uma vez que false. Isso impedirá que o componente InfiniteScroll faça mais chamadas de API. Por termo, defina o estado usando os novos dados.

O método render usa o componente InfiniteScroll e passa alguns adereços. A prop dataLength é definida para o comprimento da matriz de itens. A próxima prop é definida para o método fetchData. O prop hasMore é definido para o sinalizador hasMore. O suporte do carregador faz com que o componente renderize seu teor uma vez que um indicador de carregamento. Da mesma forma, ele renderizará a propriedade endMessage uma vez que uma mensagem quando todos os dados terminarem de carregar.

Há também outros adereços que você pode passar para o componente InfiniteScroll, mas esses são os que você usará com mais frequência.

aplicativo reagir com rolagem infinita usando pacotes de terceiros

Usando funções integradas

O React também possui alguns métodos internos que você pode usar para implementar a rolagem infinita.

O primeiro método é componentDidUpdate. O React labareda esse método depois atualizar um componente. Você pode usar esse método para verificar se o usuário rolou até o final da página e, em caso positivo, carregar mais dados.

O segundo método é rolagem, que o React labareda quando o usuário rola. Você pode usar esse método para escoltar a posição de rolagem. Se o usuário rolar até o final da página, você poderá carregar mais dados.

Cá está um exemplo de uma vez que você pode usar esses métodos para implementar a rolagem infinita:

import React, {useState, useEffect} from 'react'

function App() {
const [items, setItems] = useState([])
const [hasMore, setHasMore] = useState(true)
const [page, setPage] = useState(1)

useEffect(() => {
fetchData(page)
}, [page])

const fetchData = (page) => {
const newItems = []

for (let i = 0; i < 100; i++) {
newItems.push(i)
}

if (page === 100) {
setHasMore(false)
}

setItems([...items, ...newItems])
}

const onScroll = () => {
const scrollTop = document.documentElement.scrollTop
const scrollHeight = document.documentElement.scrollHeight
const clientHeight = document.documentElement.clientHeight

if (scrollTop + clientHeight >= scrollHeight) {
setPage(page + 1)
}
}

useEffect(() => {
window.addEventListener('scroll', onScroll)
return () => window.removeEventListener('scroll', onScroll)
}, [items])

return (
<div>
{items.map((item, índice) => (
<div key={índice}>
{item}
</div>
))}
</div>
)
}

export default App

Esse código usa os ganchos useState e useEffect para gerenciar o estado e os efeitos colaterais.

No gancho useEffect, ele labareda o método fetchData com a página atual. O método fetchData faz uma chamada de API para obter alguns dados. Neste exemplo, você está exclusivamente gerando alguns dados fictícios para provar a técnica.

O loop for preenche o array newItems com 100 inteiros. Se o parâmetro page for 100, defina o sinalizador hasMore uma vez que false. Isso impedirá que o componente InfiniteScroll faça mais chamadas de API. Por termo, defina o estado com os novos dados.

O método onScroll mantém o controle da posição de rolagem. Se o usuário rolar até o final da página, você poderá carregar mais dados.

O gancho useEffect adiciona um ouvinte de eventos para o evento de rolagem. Quando o evento de rolagem é acionado, ele labareda o método onScroll.

reaja a tela do aplicativo com rolagem infinita usando recursos integrados

Existem prós e contras em usar a rolagem infinita. Pode ajudar a melhorar a interface do usuário, proporcionando uma experiência mais suave, mormente em dispositivos móveis. No entanto, também pode levar os usuários a perder teor, pois eles podem não rolar para reles o suficiente para vê-lo.

É importante tarar os prós e os contras da técnica de rolagem infinita antes de implementá-la em seu site ou aplicativo.

Aditar rolagem infinita ao seu site ou aplicativo React.js pode ajudar a melhorar a experiência do usuário. Com rolagem infinita, os usuários não precisam clicar para ver mais teor. Usar a rolagem infinita em seu aplicativo React.js também pode ajudar a reduzir o número de carregamentos de página, o que pode melhorar o desempenho.

Você também pode implantar facilmente seu aplicativo React nas páginas do Github gratuitamente.

Leave a Reply

Your email address will not be published. Required fields are marked *