React - Guia definitivo de performance (useMemo, useCallback, memo) - Code/drops #82

Поделиться
HTML-код
  • Опубликовано: 7 фев 2025
  • O React é uma biblioteca extremamente performática e, na grande maioria das vezes, não é necessária a realização de nenhuma otimização no componente dado que otimizações prematuras podem causar mais perdas do que ganhos na performance da aplicação.
    Ainda assim, em alguns momentos, existem oportunidades para evitarmos renderizações desnecessárias em componentes no React utilizando funcionalidades como memo, useMemo e useCallback.
    Reconciliação no React: pt-br.reactjs....
    -----
    Confira a grade completa de conteúdos do canal aqui: rocketseat.com...
    Conecte-se a 200mil devs e avance para o próximo nível com a nossa plataforma: rocketseat.com...
    Cadastre-se na nossa plataforma: app.rocketseat...
    Junte-se a mais de 392mil devs em nossa comunidade no Discord: / discord
    Acompanhe a Rocketseat nas redes sociais:
    Twitter: @rocketseat
    Facebook: @rocketseat
    Instagram: @rocketseat_oficial
    Nos ouça também no Spotify:
    Podcast Faladev
    Podcast Alumni
    Podcast Proxy

Комментарии • 111

  • @Davesmg
    @Davesmg 3 года назад +46

    Estou desenvolvendo um App usando React Native e me deparei com múltiplas re-renderizações desnecessárias e decidi seguir o desenvolvimento do módulo em que trabalhava para, depois, analisar como poderia resolver isso e refatorar o necessário. Finalmente chegou a hora e passei o final de semana lendo a respeito a fim de iniciar o processo hoje.
    Aí vem vocês e me presenteiam com esse vídeo com timing perfeito.
    Vocês, definitivamente, merecem o reconhecimento que possuem com todo esse conteúdo de qualidade que produzem!

    • @rafaelinacio7148
      @rafaelinacio7148 3 года назад

      Tenta usar o React.memo, useCallback, useMemo são hooks do próprio React.

  • @williamjog93
    @williamjog93 3 года назад +22

    Que conhecimento incrível, vou elevar meu react a um novo nível.

    • @rocketseat
      @rocketseat  3 года назад +4

      Que massa que curtiu, William! Boooooora pra cima com esse React aí! 💜 🚀

  • @Franklin7x
    @Franklin7x Год назад +2

    Estou estudando Hooks a umas duas semanas agora e esse conteudo é o mais abrangente abordando profundamente os conceitos. conteudo de muito valor agregado.
    para quem estiver estudando aconselho aprofundar mais o conhecimento em documentações. ainda me pego na duvida de quando ou não usar.. acredito que so vou saber na pratica, no dia a dia.

    • @DjEdu28
      @DjEdu28 Год назад +1

      via de regra, se tá com dúvidas, então nem usa. Vai programando e Deixa quebrar! Quando quebrar aí procura o motivo. Verifica os logs no console do computador, também. Quando tá rodando o react em ambiente dev, ele enche o console do navegador de avisos e erros, muito util para encontrar algo que tenha passado despercebido, tipo as re-renderizações.

  • @abnerwillys
    @abnerwillys 3 года назад +47

    51:13 eu em 90% do meu dia kkkkkkk

  • @hdsg0807
    @hdsg0807 2 года назад

    É raro eu comentar vídeos, mas devo dizer que é o melhor conteúdo sobre o assunto que encontrei mesmo após quase vários meses depois de ser lançado.

  • @brunoneckel2446
    @brunoneckel2446 3 года назад +3

    Conteúdo desse vídeo ficou incrível, já havia assistido os vídeos antigos explicando sobre o useMemo e useCallback, mas sem dúvidas nesse vídeo a explicação ficou muito mais clara!!
    Se possível, produz um novo cobrindo tudo sobre Redux com Duck Patterns 🙏

  • @DjEdu28
    @DjEdu28 Год назад

    vlw Diegão. Voltei aqui anos depois só pra revisar o useCallback, mas assisti tudo de novo só pra aproveitar e verificar o que no começo posso ter perdido e o que tenho usado com maestria.

  • @_monkey_games
    @_monkey_games 3 года назад +17

    Esse algoritmo vai salvar muitos casais!

  • @CarlosYounes
    @CarlosYounes 2 года назад +1

    Muito Grato
    Foi ótimo
    Na caminhada da aprendizagem básica
    em backend e intermediária em frontend . Interessante o REACT. Para mim que sou iniciante, parece um ótimo caminho de aplicação do javascript.
    Parabéns pelo ótimo trabalho e conteúdos.
    Abraços e sucesso ;)

  • @marciogomes8312
    @marciogomes8312 2 года назад

    you have about the software. I personally enjoy learning so it was a little bit easier to do it over ti. But you’ll get there brother

  • @pablodanilomota
    @pablodanilomota 3 года назад +3

    Fala Diegão! cara... conteúdo sensacional!!! 💜🚀

    • @rocketseat
      @rocketseat  3 года назад +1

      Faaaala, Pablo!
      Que show que curtiu! 💜 🚀

  • @vvitor7785
    @vvitor7785 2 года назад

    I didn't know this video existed! Thanks bro! Really grateful.

  • @Frankilintel
    @Frankilintel 3 года назад

    Diego, amigo... as vezes tenho a sensação de que, foi você que criou a linguagem. Deus abençoe, mano! Fantástico!

  • @vitorgonzaga9985
    @vitorgonzaga9985 2 года назад

    Esse conteúdo foi um presente! tks!

  • @lennonlemos455
    @lennonlemos455 3 года назад

    digitando com os pés porque estou aplaudindo com as mãos! rs 👏👏👏 conteúdo nota 1000! top!

  • @Dksjsuww8
    @Dksjsuww8 3 года назад

    Muito bom. Já estou correndo para resolver uma penca de problemas com minha aplicação. Finalmente entendi o porquê de um componente mudava junto com o outro, estava maluco com isso.

  • @claytonmartins3761
    @claytonmartins3761 Год назад

    Aula top! Tirou várias dúvidas... essa vale a pena ver de novo kkkk

  • @danielvinicius4906
    @danielvinicius4906 3 года назад +1

    Diego grava um vídeo falando sobre autenticação social no NextJS com backend próprio. Parabéns pelo vídeo!

  • @carlobatera
    @carlobatera 3 года назад

    Achei Toooooop! Obrigado por compartilhar o conhecimento, Diego.

  • @dyja007
    @dyja007 3 года назад

    Conteúdo muito bom Diego! Me salvou em uma entrevista!!

    • @rocketseat
      @rocketseat  3 года назад

      Sério, Jady? Poxa, que show! Boa sorte aí! 💜

  • @Daniel-jt3dn
    @Daniel-jt3dn 3 года назад

    O brabo tem nome

  • @cesarfilho9930
    @cesarfilho9930 3 года назад

    Muito bom mesmo! Esse tipo de conteúdo é muito esclarecedor mesmo tendo a base.
    Está de parabéns Diego e todo time Rocketseat!!! \o

  • @LeandroSimoesArt
    @LeandroSimoesArt 2 года назад

    Video monstro! Aprendi muito aqui.

  • @erickcrus
    @erickcrus 2 года назад

    Gosto muito dos seus vídeos!

  • @luizleao5622
    @luizleao5622 2 месяца назад

    Show! Direto e reto

  • @WoWGuirelle
    @WoWGuirelle 3 года назад +1

    Uma pena não conseguir dar 2 likes. Parabéns pelo conteúdo.

  • @contiero_
    @contiero_ 3 года назад

    Aula muiito didática e informativa! Com certeza vai ajudar e muito nos projetos! 💜

  • @ygortf
    @ygortf 3 года назад

    Que aula, Diegão!!! Boa demais

  • @MoraesDev
    @MoraesDev 3 года назад

    Vlw Diego mais um conteudo de alto valor

    • @rocketseat
      @rocketseat  3 года назад

      Que show que curtiu, Gilberto! 💜 🚀

  • @Edy_sousa
    @Edy_sousa 2 года назад

    Hey man, It works great and without any problems.

  • @Cristian7Bitencourt
    @Cristian7Bitencourt 9 месяцев назад

    Muito bom, perfeito!!!

  • @tiagobarros7093
    @tiagobarros7093 2 года назад

    Esse vídeo é incrivel!!

  • @alexandrenascimento3105
    @alexandrenascimento3105 2 года назад

    Que vídeo, que vídeo, obrigadoo

  • @antoin3933
    @antoin3933 3 года назад

    brabo y brabo 🔥

  • @wiltonvieira8201
    @wiltonvieira8201 3 года назад

    Excelente conteúdo!!!!
    Aprendi muito!!

    • @rocketseat
      @rocketseat  3 года назад +1

      Wooow! Boa demais, Wilton! 👏‍🏻‍ 👏‍🏻‍ 👏‍🏻‍

  • @andoresp_
    @andoresp_ 3 года назад +1

    Que conteúdo massa !!!!

    • @rocketseat
      @rocketseat  3 года назад +1

      Que massa que curtiu! 💜 🚀

  • @sdmastergames4905
    @sdmastergames4905 3 года назад +7

    Eu sendo psicopata por eficiência e desempenho olhando esse video...

  • @rafaelsilveeira
    @rafaelsilveeira 2 года назад

    Muito bom! Obrigado

  • @carlosemanuelribeirolopes269
    @carlosemanuelribeirolopes269 2 года назад

    thanks, downloaded, all works!

  • @adegarapoanga8509
    @adegarapoanga8509 2 года назад

    the right and it will soft like magic!!

  • @boribilder_sem_basal
    @boribilder_sem_basal 3 года назад

    Gostei bastante da aula, mas admito que voltei umas 5x no 20:15 kkkkkkkkkk

  • @natan.opsilva
    @natan.opsilva 2 года назад

    Obrigado

  • @kaiophillipe6004
    @kaiophillipe6004 3 года назад

    44:30 salvou minha pele.. ehehe

  • @n0n3br
    @n0n3br 3 года назад +1

    Diego começa a usar o Vite pra criar os projetos react nesses vídeos. Muito mais performatico que o CRA pra tudo, como você já deve saber.

  • @wesleydcm
    @wesleydcm 3 года назад

    Muito show!

  • @marcioferlan
    @marcioferlan 3 года назад

    Fala Diego! Parabéns pelo vídeo! Bastante esclarecedor e certamente um dos melhores que já assisti sobre o assunto!
    Deixa eu te fazer uma pergunta: como tem sido sua experiência como um todo usando o Linux ultimamente? Refiro-me ao desenvolvimento web e mobile, ferramentas, gravação e edição de vídeo, estabilidade geral do sistema, produtividade... Notei que em alguns vídeos vocês têm tido problema de indexação de arquivos ao excluir pastas no VSCode, e tals.. algo mais que você poderia compartilhar com a gente? Eu uso Mac desde 2010 e nas empresas em que trabalhei usando Linux eu gostei bastante, mas sempre tinha alguns detalhes ruins e nunca me sentia tão produtivo quanto no Mac. Como tem sido a sua experiência?

  • @MarcosSantos-sv1do
    @MarcosSantos-sv1do 3 года назад

    Show demais.

  • @crcc7374
    @crcc7374 2 года назад

    Esses dias passei numa entrevista e o headrunter e o SM da empresa e do time la perguntou: Conhece React, Node, Mongo e GraphQL................. eu disse: EU tenho senioridade em Javascript, tenho expertise. Essas questões de front ta tranquilo. Resumindo, nao passei claro. AI o headhunter disse que precisava de um cara fera no react etc.............. eu dei risada, e agradeci! Depois refletir: Poxa, não entendi, o que o react faz que eu não faria em codigo puro ???? Ai , claro, a conclusão............... a galera da nossa area é muito desenformado. Nao tem raizes, nao aprendem fundamentos de programação, compilador, computador, pilhas TCP/IP para entender os protocolos que usamos nas diversas camadas que interagem com a WEB e tal. Enfim........... a mente do povo ja esta alienada em utilizar tecnologias de outras empresas, tipo, seguir a MODINHA................ e desprezam o que realmente é importante, que é: CONHECER A LINGUAGEM que esta utilizando para desenvolver a solução

  • @tiagobarros7093
    @tiagobarros7093 3 года назад

    Seria uma boa trazer video sobre testes👀🔥

  • @mprandot
    @mprandot 3 года назад +12

    Ótimo vídeo!
    Faltou comentar que quando você utiliza o useMemo a callback é executada e o valor dela é armazenado na memória, e com o useCallback apenas a referência é armazenada, não executando a callback pela primeira vez. (Se foi dito me desculpe por favor, posso ter perdido).

  • @felins013
    @felins013 3 года назад

    Salve! Grande vídeo, informações muito valiosas.
    Só um comentário, o React.memo considera apenas as props do componente, ou seja, um state ou context continuaria causando o update do componente

  • @f13flp
    @f13flp 2 года назад

    thanks bro it's really help

  • @nskdeveloper260
    @nskdeveloper260 3 года назад

    Fala Diegao, obrigado pelo conteúdo
    Excelente
    Gostaria de um vídeo sobre teste no react native é sobre quais teste fazer e como
    Se possível algo mais avançado com contextApi, estados da aplicação e renderização condicional de componentes, por exemplo
    {isAuthenticated ? : }
    Ou também quando utilizamos loader na screen
    if (isLoading) { return }
    …… continuação componente export default
    Valeu

  • @thiagofreire8988
    @thiagofreire8988 2 года назад

    thank u helped me a lot

  • @yuur1440
    @yuur1440 3 года назад

    Diegão faz um video sobre error boundaries

  • @ellsonmendesYT
    @ellsonmendesYT 3 года назад

    Não se entendi bem, mas é como se usando o callback, a função ficasse em uma memoria compartilhada assim a referencia pra função seria sempre a mesma.

  • @antonioulundo5765
    @antonioulundo5765 3 года назад

    assistindo

  • @wandersondavid1695
    @wandersondavid1695 3 года назад

    Show

  • @cristianomesquita2705
    @cristianomesquita2705 3 года назад +1

    Fala Diego, poderia fazer um semelhante mostrando no react native, pois as ferramentas para pegar estes gargalos no RN são mais limitadas, pelo menos eu não conheço uma que mostre tão detalhadamente.

  • @dudugomes6702
    @dudugomes6702 3 года назад

    Conteúdo incrível! Condensado, organizado, realmente de muito valor. Mas, e quanto ao tema sobre Presentional and Container Component Pattern?

  • @espinhara
    @espinhara 3 года назад +4

    Fala Diego, que tal comparar a renderização do React com a do Vue?

  • @nexnuum
    @nexnuum 3 года назад +5

    Diego, uma dúvida, você costuma usar 'const/arrow function' ou 'function' na criação de funções dentro de um componente?

    • @dieegosf
      @dieegosf 3 года назад +10

      Eu particularmente prefiro usar function, mas não existe grandes diferenças no uso.

    • @thenriquedb
      @thenriquedb 3 года назад +6

      @Felipe Oliveira O nome desse processo é Hoisting.
      "Em JavaScript, toda variável é “elevada/içada” (hoisting) até o topo do seu contexto de execução. Esse mecanismo move as variáveis para o topo do seu escopo antes da execução do código."

  • @xxxx3657
    @xxxx3657 2 года назад

    I drank all the milky-milk in my sippy cup!

  • @vitorrubim1
    @vitorrubim1 2 года назад

    11:45 Qual a sugestão pra esse "problema"?

  • @funmachine2011
    @funmachine2011 2 года назад

    Muito obrigado pelos vídos. Mas por favor: Compre um TECLADO SEM BARULHO por causa do microfone! 🙂🙂🙂

  • @nandonascimento6424
    @nandonascimento6424 2 года назад

    It really is

  • @adriano9833
    @adriano9833 2 года назад

    Acho que esses states do react, deveriam ser funções intrínsecas do sistema. E como se comparar linguagens que tem controle de memoria e outras nao. Java tem o Garbage collection intricicamenteo no sistema e algumas outras nao. Entao no final das contas parece ser um furo que merecia ser corrigido. Mas aula muido boa.

  • @eddypbr
    @eddypbr 2 года назад

    Salve galera, tenho uma duvida, já vi muito em algumas discussões e alguns pacotes que o pessoal dentro de um context retorna o valor memorizado, ou seja, passa todo os valores do context dentro de um useMemo e exporta eles no provider.
    Gostaria de saber se se isso é realmente correto, e quais as situações isso pode ser "viavel"

  • @mateushenrique833
    @mateushenrique833 3 года назад

    Salve Diego!

  • @Reemi
    @Reemi Год назад

    Qual é o Linux o o.s que ele usou no vídeo?

  • @diegocaiena1920
    @diegocaiena1920 3 года назад

    isso serve tanto pra React quanto pra React Native?

  • @icavalheiro
    @icavalheiro 3 года назад

    Vue não faz isso por default?!

  • @iorrancastro
    @iorrancastro 3 года назад

    Diego, podem existir casos de que eu queira que algum calculo seja executado toda vez que um estado mudar. Por exemplo, sempre que eu marcar um Todo como concluido, quer verificar a media de Todos.
    O useMemo encaixa-se nessa situação também ? Ou para esses casos, devemos usar sempre o useEffect?

    • @mprandot
      @mprandot 3 года назад +1

      Cara, você consegue fazer das duas formas
      Com o useState+useEffect fica um pouco mais complexo pois vai ter que controlar o estado (é possível mas não recomendado).
      Com o useMemo, funciona, tens que ver se vale a pena armazenar esse valor em memória (tamanho da lista + vai usar o resultado em outros componentes?)
      E também deixar o react renderizar sempre (o resultado é um tipo primitivo (number), o shallow vai funcionar).

  • @nan-code
    @nan-code 3 года назад +1

    Diego qual software você utiliza para gravar sua tela?

    • @dieegosf
      @dieegosf 3 года назад +5

      Opa, uso o OBS.

  • @andrebarbosa-marca
    @andrebarbosa-marca 2 года назад

    Po, tu explica muito bem de verdade.
    Mas tu faz uns barulho ca boca, que fica MUUUITO díficil assistir pra quem tem nervo de barulho. Igual quando uma pessoa ta comendo. Eu tento, tento, tento, pq sua explicação é boa, mas esses barulho... ARGHHH

  • @maicon.mdj97
    @maicon.mdj97 3 года назад

    Opa !

  • @Noely.Arruda
    @Noely.Arruda 2 года назад

    just woke up in hospital.

  • @evertongodoi3584
    @evertongodoi3584 3 года назад

    Galerinha qual o sistema operacional que ele usa? valeeeu

    • @GabrielSilva-ni4jy
      @GabrielSilva-ni4jy 3 года назад

      KUbuntu. tem um vídeo do canal do Guilherme Rodz que ele customiza e fica desse jeito aí.

    • @evertongodoi3584
      @evertongodoi3584 3 года назад

      @@GabrielSilva-ni4jy teria o link?

    • @GabrielSilva-ni4jy
      @GabrielSilva-ni4jy 3 года назад +1

      ruclips.net/video/h-FsG-QpgfI/видео.html&ab_channel=GuilhermeRodz

    • @evertongodoi3584
      @evertongodoi3584 3 года назад

      @@GabrielSilva-ni4jy valeeuuuu! TMJ.

  • @pedrapequena
    @pedrapequena 2 года назад

    +sub, workis

  • @CrazyHz-xg4it
    @CrazyHz-xg4it 2 года назад

    put the softs on the play them back to myself lol..

  • @diegosouza8427
    @diegosouza8427 2 года назад

    Hey,

  • @meyanoyte7015
    @meyanoyte7015 2 года назад

    Fr

  • @almeidabelly
    @almeidabelly 2 года назад

    Hacked i guess

  • @armandofariasdealbuquerque5759
    @armandofariasdealbuquerque5759 2 года назад

    The tutorial is very informative how to get hack easily just follow the tutorial0_0)

  • @crcc7374
    @crcc7374 2 года назад

    Eu acredito que se vc investir em ESTUDAR A LINGUAGEM javascript............ vc não precisa de NADA DISSO, é libs em cima de libs kkkkkkkkkkk é uma pra arruma o problema da outra, vcs percebe isso kkkk PQ, simples! PQ a ferramenta NAO TRABALHA corretamente........................ APRENDAM Javascript e desapegar de libs de terceiros e cris VC suas ferramentas ;))