Infinite Scrolling With React - Tutorial

Поділитися
Вставка
  • Опубліковано 27 вер 2024

КОМЕНТАРІ • 335

  • @jefffideler8046
    @jefffideler8046 4 роки тому +159

    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

    • @serhendiefendi
      @serhendiefendi 3 роки тому

      i agree

  • @xanderav
    @xanderav 3 роки тому +66

    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 роки тому +4

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

  • @shivaskanthan6144
    @shivaskanthan6144 24 дні тому +1

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

  • @toaninh2668
    @toaninh2668 2 роки тому +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

  • @magicfibre
    @magicfibre 2 роки тому +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 Рік тому +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 11 місяців тому

      Great explanation

    • @CesarZaitoun
      @CesarZaitoun Місяць тому

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

  • @sahaneakanayaka3394
    @sahaneakanayaka3394 Рік тому +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 😍😍

  • @acedecastro83
    @acedecastro83 5 років тому +11

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

  • @rajapavithraselvaraj5937
    @rajapavithraselvaraj5937 Рік тому

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

  • @rizqyhbb
    @rizqyhbb 2 роки тому

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

  • @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!

  • @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.

  • @uszeyboi
    @uszeyboi 3 роки тому +2

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

    • @frontendHacks
      @frontendHacks 2 роки тому

      ua-cam.com/video/c0nKjMnDfG4/v-deo.html&ab_channel=Front-EndHacks
      Watch Infinite Scroll Video here in Hindi

  • @봄여율-u9f
    @봄여율-u9f 2 роки тому

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

  • @Doom_C
    @Doom_C 4 роки тому +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!

  • @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

  • @LinkSake
    @LinkSake 4 роки тому +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.

  • @eternl_sunshine22
    @eternl_sunshine22 7 місяців тому

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

  • @Rodo1802
    @Rodo1802 11 місяців тому

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

  • @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.

  • @brunamarques580
    @brunamarques580 Рік тому

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

  • @АлинаКуракина-в9у
    @АлинаКуракина-в9у 7 місяців тому

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

  • @MaxAigner
    @MaxAigner Рік тому

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

  • @whereismyjuliet
    @whereismyjuliet 3 роки тому +1

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

  • @nalladileepreddy1436
    @nalladileepreddy1436 3 роки тому

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

  • @isaacpriestley
    @isaacpriestley Рік тому

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

  • @usamatahir6413
    @usamatahir6413 3 роки тому

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

  • @mohammadaldibes6879
    @mohammadaldibes6879 2 роки тому

    The best tutorial I've ever seen

  • @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!

  • @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!

  • @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.

  • @romihasan380
    @romihasan380 3 роки тому

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

  • @irvanhardyanto7038
    @irvanhardyanto7038 3 місяці тому

    Nice video, worked like a charm

  • @anshshrivastava9107
    @anshshrivastava9107 3 роки тому

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

  • @kingsleyakindele5389
    @kingsleyakindele5389 3 роки тому +1

    A very great tutorial man.

  • @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

  • @faris.abuali
    @faris.abuali Рік тому

    Great explanation! Thanks Kyle!

  • @itsatimemachine
    @itsatimemachine 2 роки тому

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

  • @DieterWiesflecker
    @DieterWiesflecker 3 роки тому

    Very very straightforward, keep the good work and thanks!

  • @ankitmehrotra8519
    @ankitmehrotra8519 4 роки тому

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

  • @viratkohli-jr6md
    @viratkohli-jr6md 3 роки тому

    Cool . Got my all doubt cleared. Nice work

  • @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.

  • @waynes9744
    @waynes9744 5 років тому +1

    I learned a lot from this video. Thank you, 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.

  • @mayurborse1745
    @mayurborse1745 4 роки тому

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

  • @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!

  • @mellocamilo
    @mellocamilo 3 роки тому

    Awesome tutorial!! thanks for this high quality work!

  • @jhmesseroux
    @jhmesseroux 2 роки тому

    incredible bro i appreciate this🙌 kind of content

  • @chexter-wang
    @chexter-wang 3 роки тому

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

  • @djmilen4o
    @djmilen4o 4 роки тому

    Nice and clean tutorial! Very good explained!

  • @marcusmaiialima
    @marcusmaiialima 3 роки тому

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

  • @yorkwebsolution8986
    @yorkwebsolution8986 3 роки тому

    Very simple explanation. thanks alot

  • @lexternal
    @lexternal Рік тому

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

  • @ashishkumawat6110
    @ashishkumawat6110 Рік тому

    Very clever implementation!

  • @baileysli6235
    @baileysli6235 2 роки тому +1

    5:24 - use https if you have problems

  • @cod3a
    @cod3a Рік тому

    thanks bro, very useful :)

  • @mcy93w
    @mcy93w 3 роки тому

    24k pure gold. Thank you so much!

  • @soultouchingsongs
    @soultouchingsongs 4 роки тому

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

  • @Andy801_dawless_music
    @Andy801_dawless_music 4 роки тому

    so much useful info in 25 mins 😄 thanks!

  • @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.

  • @said-magomeddzhabrailov7911

    Thanks for the great content!

  • @riankrishandi
    @riankrishandi 3 роки тому

    nice tutorial , clear explanation , thanks bro

  • @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?

  • @AjithAbinashSS
    @AjithAbinashSS Рік тому

    Great Tutorial... Helped a lot

  • @Nexjsdeveloper
    @Nexjsdeveloper 6 місяців тому

    Thank you so much, useful❤

  • @engineerscodes
    @engineerscodes Рік тому +3

    how to prevent multiple axios requests on infinite scroll ?

  • @gaming24x75
    @gaming24x75 2 роки тому

    You Solved My Problem Thanks Sir

  • @dijkstra5952
    @dijkstra5952 2 роки тому +1

    Nice tutorial. Although it's more correct semantically to use useEffect for attaching and disconnecting an observer on the last visible node rather than using useCallback like you did. Thanks for your videos!

    • @quoccuong1733
      @quoccuong1733 2 роки тому

      Is there a difference though. Ive doing it the useEffect way but wonder if 2 methods differ in any way

    • @yassinerassy6840
      @yassinerassy6840 2 роки тому

      Can you provide more details why ?

  • @shivrajnag12
    @shivrajnag12 3 роки тому +1

    How to deal with the scenerio when each item has a delete button along side it and the user can delete item while scrolling, then data will change at the backend(The data will shift to previous page and I will not get the correct no of data for scrolled page ) I hope you understood what I mean to say

  • @kat802
    @kat802 3 роки тому

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

  • @AbhishekBijalwanGaz
    @AbhishekBijalwanGaz 3 роки тому

    1000 likes from my side, Brother.

  • @md.akib5124
    @md.akib5124 5 років тому

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

  • @rva3674
    @rva3674 4 роки тому

    The best tutorial in youtube!!!

  • @freddyperez1399
    @freddyperez1399 2 роки тому +4

    With typescript your example doesn't work

  • @TiberiusGracchi
    @TiberiusGracchi 2 роки тому

    Very good information, especially the part about using useCallback instead of ref. I was just wondering how to grab the last node.

  • @xunianzu
    @xunianzu 3 роки тому

    This is very helpful. Thank you.

  • @kemcadams7210
    @kemcadams7210 4 роки тому

    This is a great example - thanks

  • @HOSS11H
    @HOSS11H 2 роки тому

    Very Useful Thank you saved my day

  • @priyasivakumar3607
    @priyasivakumar3607 2 роки тому

    Nailed it. Thanks for the Topic

  • @BhushanDhage
    @BhushanDhage 3 роки тому

    Awesome explanation 👌🤩

  • @navead30
    @navead30 4 роки тому +1

    Nice tutorial. This works smoothly for text based results. But it will struggle to render list of complex React components when list becomes huge. Can we also have a React window tutorial

  • @ramusesandasari8451
    @ramusesandasari8451 Рік тому

    Awesome Tut

  • @SanjayYadav-ur4qj
    @SanjayYadav-ur4qj 3 місяці тому

    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.

  • @mehinhuseynova1426
    @mehinhuseynova1426 2 роки тому

    Thank You. :) Works like a charm

  • @fab313
    @fab313 4 роки тому

    Great lesson. Thank you!

  • @hakanaki
    @hakanaki 3 роки тому

    Love Your Videos bro 👏👏

  • @negatif9163
    @negatif9163 3 роки тому

    wow... i did.
    but i didnt understand exactly how it happens.
    i hope when i try changing a liitle, i will be understand better.
    your projects is getting difficulty.
    but no problem.
    thanks a lot.
    :)

  • @ankurkhera11
    @ankurkhera11 4 роки тому

    Thanks a lot. Great explanation!!

  • @rideforworld
    @rideforworld 4 роки тому

    congrats for your engagement!

  • @joelspinelli3701
    @joelspinelli3701 2 роки тому

    great tutorial, thanks!

  • @GBG731
    @GBG731 3 роки тому

    Great video, good job!

  • @하면할수록할게많아진
    @하면할수록할게많아진 4 роки тому

    just amazing! perfect! thanks

  • @reedstewart8413
    @reedstewart8413 5 років тому +1

    Great video! I've been watching your React videos for some time now and was just wondering why you use es5 functions instead of es6 arrow functions? Again really good video!

    • @WebDevSimplified
      @WebDevSimplified  5 років тому +8

      It really depends on the use case. I find that if I am creating a named function such as
      function someName() {}
      then I use a normal function, but when I am nesting function calls in callbacks or making anonymous function calls like this
      someOtherFunction(() => {})
      then I use an arrow function. It really depends, though, and for the most part I use arrow functions.

    • @mattmarkus4868
      @mattmarkus4868 2 роки тому +1

      to be honest, I find the old school function() easier on the eyes. I only use => when doing anonymous functions and call backs like he said ^. But if it's just a function on the component, I like the look of the "es5" way.

  • @shaswatkumar4078
    @shaswatkumar4078 3 роки тому

    Cool Hair Style

  • @posivibez2094
    @posivibez2094 3 роки тому

    extremely helpful thank you

  • @dileepnagendra8199
    @dileepnagendra8199 Рік тому

    Brilliant !!!

  • @charliesoandso
    @charliesoandso 5 років тому

    This is outstanding. Thanks :D

  • @manimarann1457
    @manimarann1457 4 роки тому

    Thanks for such an amazing vedio bro.

  • @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 ?