Fetching Data in React - Complete Tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 มิ.ย. 2023
  • Join The Discord! → discord.cosdensolutions.io
    Source Code → github.com/cosdensolutions/co...
    In this video we talk about data fetching in React. This is a complete tutorial teaching you everything there is to know about how to fetch data in React. You'll learn about loading, handling error states, and even how to prevent race conditions using abort controllers. We'll use some hooks such as useState, useEffect, and useRef. We will use the fetch API from Node.js and we briefly mention React Query and how it can simplify things. Enjoy!

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

  • @cosdensolutions
    @cosdensolutions  3 หลายเดือนก่อน +2

    Hey everyone! I just launched 🚀 Project React, which is a course that teaches you React by building a real-world project. It goes way beyond what you see in these videos and walks you through step-by-step on how to build a big and complex application with React! You can check it out here: cosden.solutions/project-react

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

      Browser is showing "this site can't be reached"

  • @craig1253
    @craig1253 4 หลายเดือนก่อน +10

    Been stuck learning react for months and now I found this gem of a channel. Keep it up bro!

  • @aboaya2012
    @aboaya2012 6 หลายเดือนก่อน +9

    I like that you state the basics of fetching data instead of only (how to) , so thanks a lot for your help

  • @webdev-tom
    @webdev-tom 10 หลายเดือนก่อน +9

    Your videos are such a masterpiece 👍 I really hope your channel will grow very fast because you deserve it so much. Really good quality content 💯

    • @cosdensolutions
      @cosdensolutions  10 หลายเดือนก่อน

      thanks a lot! I hope so too!

  • @user-ux9iu3xo7n
    @user-ux9iu3xo7n 4 หลายเดือนก่อน +7

    I think u should also add some check statement for response.ok, because this is common case in handling responses from your own API, and u can receive response with status 400(some form validation error) or 500(some server internal error) and that's why its good practice to throw Error when !response.ok, btw, thanks for the video

  • @KonstantinosKaminaris-xe8wt
    @KonstantinosKaminaris-xe8wt หลายเดือนก่อน

    I aspire to one day be able to teach people like you do. This is really high quality teaching my friend. Respect.

  • @madhavvankina5201
    @madhavvankina5201 8 หลายเดือนก่อน +2

    Your channel is gonna pop off. Your content is top-notch 💯💯

  • @user-xj5oq7kf7x
    @user-xj5oq7kf7x 7 หลายเดือนก่อน +2

    This video was extremely informative! Looking forward to watching more React content from your channel. Would be great if you could also make a best practices video for production code or even intermediate/advanced React videos

  • @ooorayooonyoooo
    @ooorayooonyoooo 11 หลายเดือนก่อน +2

    bro you are always just straight to the point. Thanks Man!

  • @reihane2325
    @reihane2325 5 หลายเดือนก่อน

    Thanks a lot for explain very clear. I saw lots of video in TH-cam, but your explain is so helpful for me as a junior react typescript developer. Bon courage!

  • @praulayar4805
    @praulayar4805 6 หลายเดือนก่อน

    one of the best video on data fetching with vanilla data fetching

  • @jellyfish1772
    @jellyfish1772 7 หลายเดือนก่อน

    Just when i saw you were using typescript I knew this would be a great tutorial. great video❤

  • @moviegift2492
    @moviegift2492 17 วันที่ผ่านมา

    I like your way of teaching and I am new for react, i came from backend zone so I am here for the next coding sessions to see how really manages my love of data.
    Thank you for your effort. u got one sub.

  • @rishabhnegi9429
    @rishabhnegi9429 5 หลายเดือนก่อน

    I am just obsessed with your videoes ... great work 😀

  • @iCeTainment
    @iCeTainment 9 หลายเดือนก่อน +3

    I just subscribed 🎉
    Love your videos man! It’s helping me with my internship projects

  • @erikreyes6093
    @erikreyes6093 10 หลายเดือนก่อน +1

    wow very informative tutorial, there is so much to learn from you.
    I just hope you will keep creating vidoes that share your expertise in web development

  • @lisalee7946
    @lisalee7946 3 หลายเดือนก่อน

    Best instructor!! Thank you for such great content!!💯

  • @tigranharutyunyan7674
    @tigranharutyunyan7674 6 หลายเดือนก่อน

    Enthusiasm and knowledge! Thank you man

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

    Super stuff man. Please keep it up!🎉

  • @shahnawazk
    @shahnawazk 4 หลายเดือนก่อน +1

    One video to like and subscribe! Really helpful and informative. Thanks and keep it up.

  • @incarnateTheGreat
    @incarnateTheGreat 2 หลายเดือนก่อน

    Thanks for the Abort Controller solution!

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

    Fire man! 🔥 I’ve wait for you to post!

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

      Yes! More videos to come! I'm currently on vacation so I've posted a bit less

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

    Awesome stuff, thanks!

  • @TLTechbender
    @TLTechbender 20 วันที่ผ่านมา

    Thanks so much, you just helped me out big time!

  • @farhaannishtar786
    @farhaannishtar786 3 หลายเดือนก่อน

    This guy is good. Thanks for making great content

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

    Awesome tutorial!

  • @goodness776
    @goodness776 7 หลายเดือนก่อน

    Never seen a lean step by step explanation. You are indeed a masterpiece @webdev-tom💯

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

    Awesome vid im learning alot, thank you and keep it going.

  • @MaxMov-sp8hr
    @MaxMov-sp8hr 4 หลายเดือนก่อน

    One of the best! 👏

  • @hamzapaskingakhtar
    @hamzapaskingakhtar 7 หลายเดือนก่อน

    This is pure gold

  • @2difficult2do
    @2difficult2do 10 หลายเดือนก่อน +1

    This is very interesting video, exactly what I looking for. Thank you. Like

    • @cosdensolutions
      @cosdensolutions  10 หลายเดือนก่อน

      glad you found it useful!

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

    Love it. You're the best.

  • @helenasdiaries515
    @helenasdiaries515 6 หลายเดือนก่อน

    Thanks ! You are a great explainer

  • @INetreba
    @INetreba 5 หลายเดือนก่อน

    very good explanation!

  • @rellamwahid6392
    @rellamwahid6392 2 หลายเดือนก่อน

    thank you for the video, i think you should add a cleanup function in the useEffect hook to cancel any ongoing requests when the component unmounts or when page changes (talking about the abort ).

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

    Thanks for this great video. Will you consider doing a follow up video that discusses the pros/cons of the various (or most popular) React fetch methods/options (e.g. Axios et al) and suggest their usecases (when to use one over the other)?

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

      Hmm not a bad idea tbh, will note it down!

  • @Lidkovsky
    @Lidkovsky 7 หลายเดือนก่อน

    golden content.

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

    Love your videos

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

    Great content

  • @memeMerge
    @memeMerge 11 หลายเดือนก่อน

    I really liked it 👍👍

  • @user-jz8wx9op8j
    @user-jz8wx9op8j 7 หลายเดือนก่อน

    excellent video very imformative guy

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

    Good job!

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

    Perfect!

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

    awesome
    !

  • @rajnishkushx
    @rajnishkushx 5 หลายเดือนก่อน

    Luv bro, from Bharat ❤

  • @harag9
    @harag9 8 หลายเดือนก่อน

    Great video. The main different I do is with the abortController, I always put that in the cleanup return, which is what I've seen in several other videos on the same topic, it's interesting to see you doing it differently, both ways look like it will work just as well though.
    As for React Query you mentioned, do you plan on doing a tutorial on that?

    • @cosdensolutions
      @cosdensolutions  8 หลายเดือนก่อน +1

      Yeah that's another way to do it! And the RQ video has been up for a while already ☺️

    • @harag9
      @harag9 8 หลายเดือนก่อน

      @@cosdensolutions Ahh cool, still working my way through the videos. :) Really enjoying them .

  • @lynx7077
    @lynx7077 3 หลายเดือนก่อน

    I was trying to start the core of your project and i was keep getting an error. I believe i re-wrote it like 4 times.
    And then i realized something i never learned before during my Bootcamp: you have everything with tsx lol. What i was trying to do, was to write everything in jsx. So i looked it up and apparently there is a "create react with typescript" 😵‍💫 and now it shows everything. Learning something new every day. Althought i am still a bit confused between tsx and jsx and their usage

  • @MuhammadWaqas-eb1uu
    @MuhammadWaqas-eb1uu 4 หลายเดือนก่อน

    Can I use hook useloader as async fucntion to fetch api data. That is optimize way and performance application increase.

  • @kreten780
    @kreten780 7 หลายเดือนก่อน

    For loading, I really like to use an object of properties like:
    const FETCH_STATUS = {IDLE: 'idle', LOADING: 'loading', ERROR: 'error', SUCCESS: 'success'};
    In that way I have a little bit more control over what I display on different occasions.

    • @cosdensolutions
      @cosdensolutions  7 หลายเดือนก่อน

      yep, that's another way to do it!

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

    So useState is the Post a class previously you created so it here generic... Hope to clarify that... Thank

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

      Yes, I created a type of Post, with id and title. There are more properties from the API but since we only use those, I just created that type!

  • @user-tu1lx6vz9p
    @user-tu1lx6vz9p ปีที่แล้ว

    please make videos on doing project. your channel is growing since last time i commented doing great keep it up i am your subscriber

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

      How about livestreaming building an entire app from scratch, while also making it open source so anybody can contribute no matter the skill level? It'll be a great way to learn and build something real! And also, no worries, all videos will be available even after the live stream!

    • @user-tu1lx6vz9p
      @user-tu1lx6vz9p ปีที่แล้ว

      @@cosdensolutions yes thats good idea

  • @haroonkhan-dy9bt
    @haroonkhan-dy9bt 11 หลายเดือนก่อน +1

    Hey great tutorials will do a context api tutorial with fetching data and adding a cart functionality etc?

    • @cosdensolutions
      @cosdensolutions  11 หลายเดือนก่อน +1

      Haven't gotten around to doing tutorials of actual features but yes, I will do! However I have already a tutorial on useContext 😁

  • @hameeeed5992
    @hameeeed5992 23 วันที่ผ่านมา

    Thanks

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

    I was wondering if we could add signal aborting in cleanup for useEffect instead at the top 🤔🤔 Will this work??

    • @cosdensolutions
      @cosdensolutions  4 หลายเดือนก่อน +1

      yes it would, it's actually better!

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

    Hey Cosden! Thanks for the video. I never considered, or even never heard of, cancelling the racing condition. What I would normally do it is to disable the button that fires another call when the isLoading is true - it does the job 🚀. What do you think about my solution?

    • @cosdensolutions
      @cosdensolutions  4 หลายเดือนก่อน +1

      It would work, but then you're blocking the UI waiting for a response. What if the user changes their mind before the request returns? It's easier to let them change their mind and just cancel the pending request

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

      @@cosdensolutions I agree with you. Actually, this is the first time I heard about the abortController(). I will keep this video as a reference when I develop sth that would need the abortController(). In my case, using isLoading to disable the UI for a second is a good enough option :)

  • @richardleungwoogabriel9317
    @richardleungwoogabriel9317 8 หลายเดือนก่อน

    Great video! But I’m trying to get in your discord channel but I need an invite link. The link in the description doesn’t work for me

    • @cosdensolutions
      @cosdensolutions  8 หลายเดือนก่อน

      it should work, or just manually go to discord.cosdensolutions.io

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

    Any resource on data fetching and caching? Like why should I use React Query, SWR?

    • @cosdensolutions
      @cosdensolutions  4 หลายเดือนก่อน +1

      I have a video on RQ as well

  • @Riflijones01
    @Riflijones01 3 หลายเดือนก่อน

    You WILL want to watch another video on Fetching Data. Watch as many as you can because that will show you that there are other ways of doing things

    • @shashwatgupta2184
      @shashwatgupta2184 2 หลายเดือนก่อน

      Can you provide few links looks like you already seen some different ways

  • @sehlanarslan1792
    @sehlanarslan1792 5 หลายเดือนก่อน

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

    Really great keep going forward... But learning react in js not in type script

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

      that's fine! Just ignore the types then! But it would be useful to just be familiar with it, so that when you eventually do go to typescript (you should), you'll be more familiar!

  • @maryambibi9687
    @maryambibi9687 7 หลายเดือนก่อน

    Can you make one video in react life cycles ?

  • @erikreyes6093
    @erikreyes6093 10 หลายเดือนก่อน +2

    Can you create a tutorial that shows the actual sql query that fetch records from database please.
    A plain sql query and sql that uses views and stored procedure please
    Thank you very much

    • @cosdensolutions
      @cosdensolutions  10 หลายเดือนก่อน +1

      probably not for a while, I am focusing on react at the moment!

  • @abdalghanialbiek8999
    @abdalghanialbiek8999 6 หลายเดือนก่อน

    I wish to play this sound when Eren meet Anni in all timelines

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

    React Query makes this super easy

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

    What if we abort the request inside the cleanup function?

  • @user-cr1xn1td4j
    @user-cr1xn1td4j 10 หลายเดือนก่อน

    please make a video about typescript, this new syntax sometimes shocks me

  • @user-qr4vm2uo5q
    @user-qr4vm2uo5q ปีที่แล้ว +1

    What theme is this? Does anyone know?
    Thank you in advance 🙏🙏

  • @aswineepratihari7897
    @aswineepratihari7897 5 หลายเดือนก่อน

    21:38 abort control

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

    Thank you, but why i take back two responses,? These responses are the same.

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

      Maybe because you're in strict mode and React fires all useEffects twice

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

      Yes, exactly. Thank you very much.

  • @MarkDavid-so9up
    @MarkDavid-so9up 5 หลายเดือนก่อน

    Which is better?
    const fn = async() => {}
    fn()
    Or
    (async(){})()

  • @aggranular
    @aggranular 14 วันที่ผ่านมา

    If you don’t care about type of error you should use unknown, not any

  • @ABDULLAHKHALID-ix6db
    @ABDULLAHKHALID-ix6db 5 หลายเดือนก่อน

  • @marcrichet2626
    @marcrichet2626 8 หลายเดือนก่อน

    Bonsoir, What's your vscode theme please? :)

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

    Pls make your codes on JS. PLS

  • @AyushManShrestha
    @AyushManShrestha 6 หลายเดือนก่อน

    TypeError: posts.map is not a function
    {isLoading && Loading...}
    {!isLoading && (
    {posts.map((post) => {
    return {post.title};
    })}
    )}

  • @aggranular
    @aggranular 14 วันที่ผ่านมา

    I like your video but got a big fat 👎 for as Posts[] antipattern. Should have at least mentioned that in real application you should validate the response a type safe schema library

  • @brandonhopkins3438
    @brandonhopkins3438 8 หลายเดือนก่อน +3

    Big shame it's written in typescript. Still, transferred it to js and this was a great tutorial. Liked. Subscribed.

    • @cosdensolutions
      @cosdensolutions  8 หลายเดือนก่อน +4

      No problem if you use JS, but my advice is to start thinking about TS because it will probably become the standard eventually!

    • @harag9
      @harag9 8 หลายเดือนก่อน

      As Darius has said, I too would recommend picking up TS and learning that, it really does help.

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

    Hi, I am an Angular developor is learning react. I love the abortControllorRef best practice you used handle the api paging part that let the later fetch to cancel the conducting fetch, which works same as the higher order mapping operater switchMap() in Angular Rxjs.
    I got one question here: there is another higher order mapping operater is concatMap() which is used to make sure that the later request always start after the previous request complete.
    so In your case it would be like:
    you increase the page to 2 (that will try to fatch the page 2 data) when the app is still loading the page 1,
    result will be: "the page 2 request will always start after the page 1 request complete"
    this can be useful for the case that the later request is depended on the previous reuqest.
    is there any way to implement that in React?

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

    Can i contact you personally? I've got a project I'd like to get some React expertise in order to set a cart onto Framer (via React)

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

      by connecting shopify backend onto framer frontend (via embeded code)

  • @jay-kv6wn
    @jay-kv6wn ปีที่แล้ว

    Great content