Como implementar uma paginação em ReactJS

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ธ.ค. 2024

ความคิดเห็น • 61

  • @viniciusdacal
    @viniciusdacal  3 ปีที่แล้ว +15

    Fala pra gente o que você achou do vídeo. Não esquece, qualquer dúvida, comentário ou sugestão, é só deixar pra gente aqui nos comentários! 🔥🔥🔥

    • @jonasbfranco
      @jonasbfranco 2 ปีที่แล้ว

      Vinicius no ultimo codigo que voce disponibilizou, quando filtro por dragon ball por exemplo ele exibe os resultados do dragon ball por primeiro mas se for percorrendo as paginas ele exibe outros titulos, como corrigimos isso ?, ou seja para exibir somente o que estamos buscando. e também explica para nós como inserir um loading na transicao de uma pagina para outra.
      Obrigado pela atencao, conteudo sensacional...

  • @Skia_
    @Skia_ 3 ปีที่แล้ว +3

    I have no idea what you're talking about since i'm not a Portuguese speaker but this tutorial is pure gold
    I wish you could have someone implement English subtitles for your videos

  • @gabrielmedeiros9806
    @gabrielmedeiros9806 2 ปีที่แล้ว +1

    Esse código está criando mais botões que o necessário. Se você for até o final, vai perceber.
    Acho que adicionar alguma lógica como a de baixo, iria ajudar.
    Basicamento quando a soma para direira for mais que o número de páginas, trava.
    Fiz os testes e funcionou aqui. Porém de forma geral, foi uma aula aula excelente, parabéns!
    // Know when to stop creating new pagination buttons
    const diffLimit = pages - current - MAX_LEFT;
    const first =
    diffLimit < 0 ? pages - 2 * MAX_LEFT : Math.max(current - MAX_LEFT, 1);

    • @viniciusdacal
      @viniciusdacal  2 ปีที่แล้ว

      Fala Gabriel, beleza?
      Realmente, nós identificamos esse bug depois que o vídeo já estava publicado.
      O link com o código corrigido está na descrição do vídeo.
      Valeu demais pela sugestão!
      Abraços.

    • @gabrielmedeiros9806
      @gabrielmedeiros9806 2 ปีที่แล้ว

      @@viniciusdacal ah top irmão! Sensacional o conteúdo! Parabéns pelo que vem fazendo pela comunidade. Quero um dia chegar no seu nível.

  • @arielcampos7656
    @arielcampos7656 6 หลายเดือนก่อน +1

    Mais complicado do que eu pensei paginar kkkkk, obrigado pelo tutorial!

  • @robprados
    @robprados 3 ปีที่แล้ว +3

    Rapaz, eu falhei miseravelmente ao tentar fazer um projetinho de teste para uma contratante dentro do prazo que me pediram, e decidi manter esse projetinho como um portifólio meu, sempre melhorando os patterns do meu código. Vi alguns outros vídeos de paginação, mas o teu foi o que mais serviu pra mim no momento. Show!

  • @lucasquearis
    @lucasquearis 3 ปีที่แล้ว +5

    Vídeo excelente, me ajudou demais, mas pra acrescentar tem um bugzinho, quando chega na ultima renderização de página, ainda sim é renderizado os botões pras proximas páginas que não existem, resolvi colocando uma condição no segundo map onde eu falo só para renderizar quando o "page" do map for menor ou igual ao numero total de páginas, if (page

    • @jposava
      @jposava 2 ปีที่แล้ว

      tb percebi isso no meu

  • @jacksonmatheus5642
    @jacksonmatheus5642 ปีที่แล้ว

    Parabéns pelo conteúdo!

  • @rubenslima7475
    @rubenslima7475 9 หลายเดือนก่อน

    Me ajudou bastante, vídeo bem explicativo. Consegui implementar a páginação no projeto com seu exemplo.

  • @AriVenuth
    @AriVenuth 2 ปีที่แล้ว

    Vinicius, obrigado por compartilhar !!!
    Esse vídeo literalmente me salvou...
    Após ver e rever observei os mesmos detalhes que a galera já comentou... o FIRST foi o calcanhar de Aquiles da lógica... rsrs...

  • @rafael7425
    @rafael7425 2 ปีที่แล้ว +1

    você é um dos melhores professores de react!!! valeuu

  • @dertedias
    @dertedias 3 ปีที่แล้ว

    sempre que preciso posso vir procurar, seus vídeos tem me ajudado muito, obrigado.

  • @romulomelo7595
    @romulomelo7595 3 ปีที่แล้ว +2

    o youtube até notificou!! vlw vinicius, didática perfeita

  • @gionth8998
    @gionth8998 ปีที่แล้ว

    Muito obrigado pela aula!

  • @Joao.Gabriel7
    @Joao.Gabriel7 ปีที่แล้ว

    Muito obrigado pelo vídeo Vinicius, me ajudou bastante!! abraço.

  • @eemr2
    @eemr2 3 ปีที่แล้ว +3

    Fala Vinicius show essa aula, sim gostaria de na próxima aula o loading dos itens e também se possível o conceito de spa nesse projeto, pois todas as vezes que clica no botão de paginação ele recarrega a página toda. :).

  • @arrobacoca3883
    @arrobacoca3883 ปีที่แล้ว

    Nossa.. virei seu fã! Quero ser programador igual você!!

  • @pedrotrudes1726
    @pedrotrudes1726 ปีที่แล้ว

    Cara muito obrigado pelo conteúdo, me ajudou muito hoje!

  • @Jumael_Oficial
    @Jumael_Oficial ปีที่แล้ว

    mto obrigado mano, consegui implementar no meu projeto aqui.

  • @leandropinho3871
    @leandropinho3871 ปีที่แล้ว

    muito bom video, obrigado por compartilhar o conhecimento

  • @Vaiikus
    @Vaiikus 2 ปีที่แล้ว

    que video FODA, obrigado Vinicius

  • @raphaellima1348
    @raphaellima1348 ปีที่แล้ว +1

    Uma dúvida no tempo 9:29 pq tem constante que são definidas dentro e fora da função do componente? Qual o critério para isso?
    Ótima aula!!!

  • @robsonpinheiro7012
    @robsonpinheiro7012 ปีที่แล้ว

    Muito bom, cara. Deixei o like!

  • @rafaelinacio7148
    @rafaelinacio7148 3 ปีที่แล้ว +1

    Muito boa aula

  • @luispaulo2061
    @luispaulo2061 3 ปีที่แล้ว +1

    Vídeo excelente. Muito obrigado por compartilhar Vinicius!! Gostaria sim de um vídeo sobre a funcionalidade com o state de load! :)

  • @leonardolisboa4763
    @leonardolisboa4763 2 ปีที่แล้ว

    Cara, muuuuito obrigado mesmo por fazer esse video!!! SALVOU DEMAISS, VOCÊ É FODA!

  • @raphaeltaglialegna9668
    @raphaeltaglialegna9668 2 ปีที่แล้ว

    Parabéns pelo vídeo e pela explicação, me ajudou muito!

  • @oiak744
    @oiak744 3 ปีที่แล้ว +4

    Faaaala amigão ! beleza ?
    Cara essa aula sua foi fera. Didática muito boua!
    Sem contar que deu para perceber sua preocupação com clean code e domínio em lógica de programação. Me ajudou a resolver minha dúvida de paginação rsrs. Primeira vez que necessito fazer uma.
    Mas ao aplica seu código no meu aqui, verifiquei uma coisa.
    Sua lógica aplicada no final para mostrar o Math.min dos buttons foi ok.
    Mas pensemos o seguinte:
    E o last button ?
    Como verificaremos ele ?
    Se eu tenho 5 páginas para mostrar, ao clicar no button 5, eu não posso fazer um map de (index + first). Pois -> 0 + 4 = 4; 1 + 4 = 5; 2 + 4 = 6;
    OBS: (Considerando o MAX_ITENS=3)!!
    Como pode ver, o map acaba por inserir o button 6 sendo que são só 5 páginas !
    O que eu fiz para corrigir isso foi verificar se a page atual que estou é igual ao total de pages. Se for, eu faço o map passando Math.max(total_pages - (MAX_ITENS -1), 1)
    Assim, eu tenho uma variável last.
    Não sei se faz sentido isso na sua aplicação. Mas aqui se resolveu assim. Vou testar mais rsrsrs.
    E valeu pela aula esclarecedora !

    • @viniciusdacal
      @viniciusdacal  3 ปีที่แล้ว +1

      Bem apontado Kaio.
      Eu lembro que em algum momento eu testei isso, mas no processo de simplificar a lógica para gravar o vídeo, acho que essa parte acabou saindo fora 😅.
      A correção feita por você está perfeita!
      Eu só extrairia ela para uma variável, lá no topo do componente, como fiz aqui nesse exemplo:
      codesandbox.io/s/brava-pagination-forked-7f0q6?file=/src/Pagination.js
      Muito obrigado por apontar esse detalhe.
      Grande abraço.

    • @filippobarcellos2944
      @filippobarcellos2944 3 ปีที่แล้ว +1

      Tem algum exemplo de como ficou?

    • @viniciusdacal
      @viniciusdacal  3 ปีที่แล้ว

      @@filippobarcellos2944 Pode acessar esse link aqui: codesandbox.io/s/brava-pagination-forked-6sv4k?file=/src/Pagination.js

  • @tectutor5460
    @tectutor5460 3 ปีที่แล้ว +2

    Resolveu meu problema, valeu!

  • @marcusrodriguesnogueiradem4022
    @marcusrodriguesnogueiradem4022 3 ปีที่แล้ว +1

    Excelente vídeo, estou aprendendo React e achei esse vídeo muito esclarecedor. A questão de carregar a pagina usando o load e a parte de dar um alert caso não encontra a pagina já sei como fazer. Mas eu tenho algumas dúvidas onde salvo os informações da paginas, em cookies, no localstorage ou ainda salvando em lugar. Agradeço demais essa aula

  • @digitalhdr7768
    @digitalhdr7768 3 ปีที่แล้ว

    essa era a aula que eu estava procurando valeu.

  • @LucasINverso
    @LucasINverso 3 ปีที่แล้ว +1

    Muito bom, parabéns!

  • @vivianeambrosio7147
    @vivianeambrosio7147 2 ปีที่แล้ว

    dei like quando vi cowboy bebop, mas o vídeo ta show ;)

  • @VictorRandom
    @VictorRandom 3 ปีที่แล้ว

    valeu demais, excelente video, ganhou 1 inscrito

  • @joaovitor-vw5pq
    @joaovitor-vw5pq 2 ปีที่แล้ว

    Que dica você dá para quem esta travado no react. Considero fácil aprender javascript mas a lib é complexa ao meu ver.

  • @jonasbfranco
    @jonasbfranco 2 ปีที่แล้ว

    Vinicius no ultimo codigo que voce disponibilizou, quando filtro por dragon ball por exemplo ele exibe os resultados do dragon ball por primeiro mas se for percorrendo as paginas ele exibe outros titulos, como corrigimos isso ?, ou seja para exibir somente o que estamos buscando. e também explica para nós como inserir um loading na transicao de uma pagina para outra.
    Obrigado pela atencao, conteudo sensacional...

  • @pedroaulicino3196
    @pedroaulicino3196 3 ปีที่แล้ว +1

    Top ja tem meu like :D

  • @nicholasbalby4535
    @nicholasbalby4535 2 ปีที่แล้ว +1

    Mano, não sei se entendi bem, mas está sendo feita uma nova consulta toda vez que muda a página (mesmo quando volta)? O adequado não é "guardando" o resultado das paginações anteriores?

    • @viniciusdacal
      @viniciusdacal  2 ปีที่แล้ว +1

      Nesse tipo de paginação é sempre recarregado. Porque os dados podem ter sidos alterados enquanto você está utilizando, o que pode mudar a ordem deles ou mesmo os dados em si.
      Então normalmente não fazemos o cache no frontend.
      Porém, algum nível de cache pode ser implementado no backend, levando updates em consideração.

  • @simas1266
    @simas1266 3 ปีที่แล้ว

    Tem como fazer sem precisar colocar no get da query da api?

  • @santatartaruga4051
    @santatartaruga4051 3 ปีที่แล้ว

    Este exemplo seria bom se fosse genérico, mas é específico da api da anime. Tentei usar em outro contexto, nao funcionou.

  • @cesaraugusto1022
    @cesaraugusto1022 2 ปีที่แล้ว

    Fala Vinicius, encontrei um problema que não sei se o pessoal ta passando pelo mesmo. Quando vc fez a função onPageChange e seta o setOffset((page - 1) * limit), vamos supor que o indice da minha pagina seja 2 e o limit seja 15, ficando assim "setOffset((2 - 1) * 15)" dando um resultado de 15, ou sejá ele vai me levar para a página 15. Como posso corrigir?
    Também te mais um bug de calculos que é o seguinte, vou usar do mesmo exmplo no current vc faz o segunt calculo, se offset for nulo então é 1, mais se offset for = 2 e o limit for = 15 e temos que somar + 1 então teremos 2 / 15 = 0,1333333333333333 ai somamos + 1 que é = 1,133333333333333, dando numero quebrado e ai quando uso o current - 1 ou current + 1 me da um bug também. Outro ponto que queria saber como corrigir.

    • @AriVenuth
      @AriVenuth 2 ปีที่แล้ว

      1º ->>> setOffset((2-1)*15) = 15... ou seja: para um LIMIT de 15 vc vai estar na página 2 e não na página 15...
      a página inicial seria ... setOffset((1-1)*15) = 0, se o seu offset é ZERO vc está na página inicial...
      2º ->>> o mínimo para CURRENT tem que ser 1, senão dá M&rd@.... a conta que vc simulou dá 0,13333..... é menor que um... então como sugestão ... Math.max(current, 1)
      Eu fiz exatamente como está no código do link:
      codesandbox.io/s/brava-pagination-forked-6sv4k?file=/src/Pagination.js
      funcionou perfeitamente... só adaptei a exibição ao meu projeto...
      espero, mesmo depois desse tempo todo, ter ajudado...

    • @GustavoSiqueira18
      @GustavoSiqueira18 2 ปีที่แล้ว

      @@AriVenuth aqui aconteceu a mesma coisa, o current seria 2, mas vamos usar o valor de 15 igual o exemplo do amigo, o offset fica literalmetee com o valor de 15 , ou seja a paginação estará no 2 mas a página que carrega é a 15... estou usando o mesmo código do vídeo

  • @jailsonsantos555
    @jailsonsantos555 3 ปีที่แล้ว

    A minha dúvida é, para uma aplicação que mostre apenas 3 resultados por pagina, ele faz a requisição a API em cada clique de botão? trazendo 3 resultados por clique? ou ele ta trazendo um uma quantidade ex: 50 resultados e paginando esses 50, qual a melhor forma de otimizar e não bombardear a API com requisições? OTIMO VÍDEO, PARABÉNS...

  • @halloween897g2
    @halloween897g2 3 ปีที่แล้ว

    Me ajudou muito!

  • @tectutor5460
    @tectutor5460 3 ปีที่แล้ว

    Ao avançar todas as páginas ele sempre está incrementando mais, mesmo tendo chegado à última. Acontece aí?

    • @oiak744
      @oiak744 3 ปีที่แล้ว

      Respondi logo acima irmão

  • @ChrisG59
    @ChrisG59 4 หลายเดือนก่อน

    Pode me informar o nome do tema q cê usa? achei bonitão kk

  • @lucianojunior356
    @lucianojunior356 3 ปีที่แล้ว

    Muito bom Vinicius porém esta com um bug se vc for para a ultma pagina

    • @viniciusdacal
      @viniciusdacal  3 ปีที่แล้ว +1

      Boa luciano!
      No processo de simplificar a lógica, eu acabei esquecendo de testar um dos cases.
      O código com a correção está disponível aqui:
      codesandbox.io/s/brava-pagination-forked-6sv4k?file=/src/Pagination.js
      Qualquer dúvida, fico a disposição.
      Grande abraço.

  • @bruxxi86
    @bruxxi86 3 ปีที่แล้ว

    achei dificil de entender, daqui uns meses eu volto com mais informações pra ver se consigo capitar tudo que foi falado

  • @vidaprogramada1235
    @vidaprogramada1235 ปีที่แล้ว

    18:02 quarenta e ovo kkkkkkkkkkkkk

  • @rodrigo-tj1gf
    @rodrigo-tj1gf 10 หลายเดือนก่อน

    na moral, voltar pro back-end msm, sas porra de front-end não prestam não

  • @ldstudio3044
    @ldstudio3044 3 ปีที่แล้ว

    Muito bom, parabéns!