Infinite Scrolling With React - Tutorial

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

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

  • @jefffideler8046
    @jefffideler8046 4 года назад +161

    Gotta say...this is probably the best, most straightforward tutorial I've ever seen!

    • @Mike37373
      @Mike37373 4 года назад

      why is openlibrary.org/search.json empty?

    • @jefffideler8046
      @jefffideler8046 4 года назад

      @@Mike37373 perhaps it needs params i.e.
      axios({
      method: 'GET',
      url: url,
      params: { q: query, page: pageNumber },
      cancelToken: new axios.CancelToken(c => cancel = c)
      }).then

    • @serhend3
      @serhend3 4 года назад

      i agree

  • @xanderav
    @xanderav 4 года назад +69

    Hey!, just a simple tip that i use, is when you want to know if an array have elements (means its length is greather than 0), you only have to put array.length instead of array.length > 0, because if array.length is 0, 0 means false, and if is not 0 so is true, sorry if my english is bad.

    • @irasanchez1265
      @irasanchez1265 3 года назад +11

      No need to apologize for your English. it was understandable.

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

      Or you can just use the array, [] is falsy.

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

      @@nishantmogha7679 array [] and {} are truthy brah

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

      Also to make sure the app won't crash when array is null use optional chaining like myArr?.length

    • @xxxyy7452
      @xxxyy7452 2 года назад +5

      You can do that, but sometimes clearly code better than clever code

  • @shivaskanthan6144
    @shivaskanthan6144 5 месяцев назад +3

    4 years later and this still works like a gem, Kudos to you!

  • @toaninh2668
    @toaninh2668 3 года назад +2

    when i click this video, i only expect to know how to implement infinity scroll. But after 25 minutes i have learned way more than that, like custom hook. Thank you so much

  • @johnbox5540
    @johnbox5540 4 года назад +5

    awesome video. infinite scrolling starts at 17:50

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

    Man I have watched literally thousands of paid courses, but no course matches the level of explanation that this guy provides. Simply Amazing. Hats off!

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

    I really have to say.. this was the best, clear, very staright forward tutorial. AWESOME

  • @sahaneakanayaka3394
    @sahaneakanayaka3394 2 года назад +2

    That useCallback() behavior with useRef() that confused me, now I got it. Thank you Kyle, this is the best explanation about infinite scrolling with react 😍😍

  • @akarshsrivastava8890
    @akarshsrivastava8890 3 года назад +9

    Kyle, you are great. Never found a tutor explaining such complex topics so easily. 😊

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

    just from this video I have learned so many things, mainly the useRef and useCallback. thankyou

  • @fluntimes
    @fluntimes 4 года назад +2

    Great to see a video that includes some of the more advanced React features. I'll definitely need to watch this again, which is a feature of the best code run through videos.

  • @magicfibre
    @magicfibre 3 года назад +23

    I think this deserves a clarification - it's not just useCallback that can be assigned to an element's ref. Any function can be passed there, you just need to be very careful if the function updates state, since it can cause infinite re-renders.
    Therefore, in this scenario, Kyle is right to use the useCallback hook, as the function he's using calls setPageNumber.
    Let's say he used a plain function: the function he's using sets the state at some point, which re-renders the component. When the component gets re-rendered, the function gets reinstantiated. Since it's passed to an element's ref, the element gets re-rendered, which calls the function again. The function changes the state, causing the component to re-render... and we have ourselves an infinite loop.

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

      Wonderful explanation!!

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

      this literally just happened in class a few minutes ago in this example our TA was showing us...thank you now I understand why

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

      Why can't we just create an reference using useRef and pass it to the component. Then Handel the intersection observer without a function.

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

      Great explanation

    • @CesarZaitoun
      @CesarZaitoun 5 месяцев назад

      Thanks for explaining that, this is the only section in the video that I needed more explanation on

  • @Doom_C
    @Doom_C 5 лет назад +1

    Awesome tutorial man. Straight to the point and well explained. Got an infinite scroll up and working in my application no problem after watching this. Subscribed!

  • @acedecastro83
    @acedecastro83 5 лет назад +12

    Learned a lot from this. Thank you so much Kyle 🙏🏼

  • @roy_sleeps
    @roy_sleeps 4 года назад +1

    Amazing tutorial, as special the approach to trigger the axios function via IntersectionObserver instead of div.scrollHeight.

  • @uszeyboi
    @uszeyboi 4 года назад +2

    Thank you so much! I was struggling with window object so long and finally your video helped me!

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

      ruclips.net/video/c0nKjMnDfG4/видео.html&ab_channel=Front-EndHacks
      Watch Infinite Scroll Video here in Hindi

  • @봄여율-u9f
    @봄여율-u9f 3 года назад

    This react lecture is AMAZING... Thanks from Korea.

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

    This is a great tutorial, straight to the point and clear. Thank you, Kyle!

  • @LinkSake
    @LinkSake 5 лет назад +6

    Amazing! Thank you very much, I thought it would be harder to make something like this.
    Also THANKS because I finally got how to make a custom hook, I was having some struggles to get it.

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

    Thank you so much for this tutorial, it literally helped me pass in a interview test 👏

  • @eternl_sunshine22
    @eternl_sunshine22 11 месяцев назад

    thanks!! used your pagination api with this, tweaked it a little as i'm using sequelize and it works great.

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

    I am really impressed by this tutorial, it helped me a lot in my current react project, thank you!

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

    Your tutorials are incredible! It's so much great information in such a concise presentation.

  • @sergiodfm
    @sergiodfm 4 года назад +1

    I. You are awesome. This video is amazing. You just went straight to the point and your language was very clear. Thanks for sharing this content.

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

    Thank you so much! None of the other solutions worked for me except this!

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

    The best tutorial I've ever seen

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

    I'm tried to use infinite scrolling library but it not looking good.
    Your video had save my life it working great and smooth, Thanks

  • @nalladileepreddy1436
    @nalladileepreddy1436 4 года назад

    Never saw any better explaination than this, thank you ..

  • @koladeleolaitan
    @koladeleolaitan 2 года назад +2

    Just used this at work. Thank you Kyle!

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

    Thanks for the tutorial. This is probably the best, most straightforward tutorial

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

    Really good approach, dude your video helped me a lot to finish my project at work, Thank you so much

  • @АлинаКуракина-в9у
    @АлинаКуракина-в9у 11 месяцев назад

    Thank you for making such an understandable and useful lessons! You're really great🙏💛

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

    you've a better solution than using scroll position broo, good job!!

  • @parasarora5869
    @parasarora5869 5 лет назад

    its totally amazing. i dont know about intersection observer so was a bit confused there but the video was mind blowing. Thanks for explaining the idea behind the infinite scroll

    • @WebDevSimplified
      @WebDevSimplified  5 лет назад +1

      Intersection Observer is a bit complex, but it makes doing things like infinite scrolling so much easier.

    • @parasarora5869
      @parasarora5869 5 лет назад

      @@WebDevSimplified yes.. absolutely correct

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

    The intersectionObserver is awesome!! so much more practical!

  • @viratkohli-jr6md
    @viratkohli-jr6md 3 года назад

    Cool . Got my all doubt cleared. Nice work

  • @kingsleyakindele5389
    @kingsleyakindele5389 4 года назад +1

    A very great tutorial man.

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

    your videos are awesome-- thank you!
    also, happy new year

  • @sendashish
    @sendashish 2 года назад +6

    There is one serious situation custom hooks can land into is when the arguments change, the useEffect inside hook is not called synchoronously, in fact it is called asynchronously whenever React wants, therefore, the very first render after the change of the arguments, hook will still return the stale data (in this case the books because of useState). I land into this issue when I was creating my useLocalStorage which takes a key. And when I change the key it still returns data for the old key. This scenario is well taken care by useSWR hook, the moment the API URL changes the data returned is different. Can you make a video regarding these advanced patterns in REACT sometime?. That would be wonderful!

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

    incredible bro i appreciate this🙌 kind of content

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

    This tutorial is amazing! Thank you very much for making it simpler!

  • @faris.abuali
    @faris.abuali Год назад

    Great explanation! Thanks Kyle!

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

    Awesome tutorial mate! I suggest including "Custom React Hooks" in your title. I was actually pleasantly surprised that this tutorial was going to include custom hooks. If I had saw that in the title, I would have clicked on it way earlier since React Hooks is the hot thing that everyone should be learning now. Furthermore, now that I've saved this to my React playlist, I still won't know that it includes custom hooks when I scan through all the video titles.

  • @razzsawhoney2818
    @razzsawhoney2818 4 года назад

    Thanks man. A much needed tutorial for me...

  • @irvanhardyanto7038
    @irvanhardyanto7038 7 месяцев назад

    Nice video, worked like a charm

  • @anshshrivastava9107
    @anshshrivastava9107 4 года назад

    Thanks for this man, exactly what I was looking for, now I can create what I wanted. THANKSSSSSSSSSSSSSS

  • @ankitmehrotra8519
    @ankitmehrotra8519 4 года назад

    Thanks a lot Kyle. All of your videos are top notch..

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

    Very clever implementation!

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

    Thank you for this tutorial! I got something similar workign, I just wanted the "isVisible" for one of my elements to show up.
    I think this video is a little too long, and getting the custom hook created is a little bit of a side job for getting infinite scrolling, and I would have preferred just getting the "isVisible" working, and then going from there.
    That being said, thanks for the info, your tutorials are always at a good pace, and I like that you've included the source code!

  • @brindch8372
    @brindch8372 5 лет назад +1

    Just a side note, you can also use Debounce Component to have delay when the user stops typing. Anyway, Great job! thanks for this!

    • @WebDevSimplified
      @WebDevSimplified  5 лет назад +3

      Very true. For this small use case it isn't really a big deal, but in a larger application this could save a lot of performance. Thanks for the tip.

    • @ManishKarki
      @ManishKarki 5 лет назад

      @@WebDevSimplified can you point me to some resource for this"debounce"? Thanks

    • @brindch8372
      @brindch8372 5 лет назад

      @@ManishKarki you can search for react-debounce-input

    • @WebDevSimplified
      @WebDevSimplified  5 лет назад +3

      @@ManishKarki Just do a Google search for React debounce. Essentially all it is, is delaying the axios request.

  • @Andy801_dawless_music
    @Andy801_dawless_music 4 года назад

    so much useful info in 25 mins 😄 thanks!

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

    Very very straightforward, keep the good work and thanks!

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

    Great Tutorial... Helped a lot

  • @amitpareek8905
    @amitpareek8905 4 года назад

    Amazing video. You have made a complex thing look so easy. Keep up the great work!!
    Thank you!

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

      ruclips.net/video/c0nKjMnDfG4/видео.html&ab_channel=Front-EndHacks
      Watch Infinite Scroll Video here in Hindi

  • @Nil-js4bf
    @Nil-js4bf 2 года назад

    Didn't realize so little code was required for this. I'm too used to using libraries and I'm not aware of what Web APIs there are. Going to put an effort to learning more of these things and getting comfortable with web APIs like Intersection observers and setting it all up with refs and callbacks

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

    24k pure gold. Thank you so much!

  • @soultouchingsongs
    @soultouchingsongs 4 года назад

    Thanks a lot for the video🙏. Finally understood infinite scrolling.👍

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

    Hey Kyle, thanks for the amazing tutorial, appreciate your work. I know this is an older video but had a quick question if you ever had the chance to read this, I can't figure out why the function inside the useCallback() where you defined the intersection observer get's called 4 times each time an intersection is observed. Best.

    • @limitless9483
      @limitless9483 3 года назад +2

      Its being called twice, the first time you feed the target (node ) to the observer and the second when the target intersects with its intersection root (the scrollable div container)

  • @chexter-wang
    @chexter-wang 3 года назад

    This is so easy to use and does help a lot! Thank you for the video!

  • @djmilen4o
    @djmilen4o 5 лет назад

    Nice and clean tutorial! Very good explained!

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

    Love Your Videos bro 👏👏

  • @BhushanDhage
    @BhushanDhage 4 года назад

    Awesome explanation 👌🤩

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

    thanks, great tutorial. prob one of the best i ever watch

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

    Awesome tutorial!! thanks for this high quality work!

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

    thanks dude, u save my job. button like for u

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

    nice tutorial , clear explanation , thanks bro

  • @waynes9744
    @waynes9744 5 лет назад +1

    I learned a lot from this video. Thank you, Kyle.

  • @yorkwebsolution8986
    @yorkwebsolution8986 4 года назад

    Very simple explanation. thanks alot

  • @AbhishekBijalwanGaz
    @AbhishekBijalwanGaz 4 года назад

    1000 likes from my side, Brother.

  • @mayurborse1745
    @mayurborse1745 4 года назад

    Awesome. Just what I was looking for. I used it in photo grid and full screen view in my app. Thanks

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

    Thank man!! It was very simple to implement and add to the project.

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

    Thank you for this amazing video! My project was a little different but I managed to make it work in a short amount of time.

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

      ruclips.net/video/c0nKjMnDfG4/видео.html&ab_channel=Front-EndHacks
      Watch Infinite Scroll Video here in Hindi

  • @rva3674
    @rva3674 4 года назад

    The best tutorial in youtube!!!

  • @gautamv2046
    @gautamv2046 4 года назад

    Really appreciate your work, simplest of all

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

      ruclips.net/video/c0nKjMnDfG4/видео.html&ab_channel=Front-EndHacks
      Watch Infinite Scroll Video here in Hindi

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

    thanks bro, very useful :)

  • @chronotriggered204
    @chronotriggered204 5 лет назад

    Wow, infinite scrolling was simplified many thanks, your explanations help me grok

  • @said-magomeddzhabrailov7911
    @said-magomeddzhabrailov7911 Год назад

    Thanks for the great content!

  • @md.akib5124
    @md.akib5124 5 лет назад

    wow you just taught us to make a node_module. Thank you so much

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

    Nailed it. Thanks for the Topic

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

    Very Useful Thank you saved my day

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

    This is very helpful. Thank you.

  • @kemcadams7210
    @kemcadams7210 4 года назад

    This is a great example - thanks

  • @Nexjsdeveloper
    @Nexjsdeveloper 10 месяцев назад

    Thank you so much, useful❤

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

    Thank You. :) Works like a charm

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

    Great video, good job!

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

    You Solved My Problem Thanks Sir

  • @niyongaboeric
    @niyongaboeric 4 года назад

    Hi Kyle, thank you for sharing the video. 17: 05 to 17: 46 min saved me. I never used two userEffect before, one to clean the state another to fetch data until I watched your video.
    I am implementing Cursor relay pagination. I had an issue about clearing old data. Whenever react-route changes I could get old data and new data repeatedly. I 've fixed the issue after 2 days struggling with your help.
    God bless you brother.

    • @Mike37373
      @Mike37373 4 года назад

      why is openlibrary.org/search.json empty?

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

    Very good tutorial, but what if we don't use axios, instead we are using vanilla xmlhttprequest, how do we do throttling effect in this circumstances ?

  • @avneet12284
    @avneet12284 5 лет назад

    O boy !! That was excellent 👍👌

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

    Amazing content!
    Thanks a lot!

  • @jrs_devs
    @jrs_devs 2 года назад +2

    Using the ref on the children will force them to re-render when they're not the last item in the array, so maybe is better to use a the ref on a footer or something to observe the IntersectionObserver.
    And use useEffect to have the same functionality.

  • @brinascode980
    @brinascode980 4 года назад +1

    Hey Kyle, what advantage did useCallback have here over a regular function, since it's using a dependency array anyway? Thanks for the video!

  • @akshayjadhav2418
    @akshayjadhav2418 4 года назад +1

    Really good content kyle, please make video on lazy loading and interceptor in react (:

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

    great tutorial, thanks!

  • @ankurkhera11
    @ankurkhera11 5 лет назад

    Thanks a lot. Great explanation!!

  • @HostDotPromo
    @HostDotPromo 5 лет назад +1

    A react native tutorial on this would also be awesome. Currently building an app with native.

    • @WebDevSimplified
      @WebDevSimplified  5 лет назад +2

      I don't like mobile development so there probably won't be much if any React Native on my channel.

  • @SanjayYadav-ur4qj
    @SanjayYadav-ur4qj 8 месяцев назад

    Great! I want to highlight that you keep adding new items to DOM, which will make DOM heavy. In this approach, We might have a large number of elements. How can we solve this issue? Is there any approach where we can maintain a specific set of items? No matter how long the list is.

  • @fab313
    @fab313 5 лет назад

    Great lesson. Thank you!

  • @granporculio
    @granporculio 4 года назад

    Magnificent video 👏👏👏
    When should this infinite scroll be used vs manual pagination?

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

      Litterally you have an example on RUclips check your notification bell

  • @kumardeepak260
    @kumardeepak260 4 года назад +2

    Hi, first of all, owsm breakdown of the code... loved it, understood it.
    1 QUERY, after loading 1 or 2 more page if the error occur, then along with Error... , Loading... is also present.
    Can you tell how to remove the loader if the error occurs?

    • @Mike37373
      @Mike37373 4 года назад

      why is openlibrary.org/search.json empty?