React Router in Depth #6 - Loaders

Поделиться
HTML-код
  • Опубликовано: 15 сен 2024
  • In this React Router tutorial you'll learn about loaders - a newer way to fetch component data.
    ⭐⭐ Watch the whole course now (without ads) on Net Ninja Pro:
    netninja.dev/p...
    🐱‍💻 Access the course files on GitHub:
    github.com/iam...
    🐱‍💻 React Tutorial:
    On Net Ninja Pro - netninja.dev/p...
    On RUclips - • Full React Tutorial #1...
    🐱‍💻 React Router Docs - reactrouter.co...
    🐱‍💻 VS Code - code.visualstu...

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

  • @donnmichaelcleofe7132
    @donnmichaelcleofe7132 3 месяца назад +2

    I really appreciate when the tutorials are up to date. Pls keep the good job

  • @jerrerock
    @jerrerock Месяц назад

    I am following a course on CodecAdemy but for many parts I am also watching your tutorials which are explaining it a lot better!

  • @maskman4821
    @maskman4821 Год назад +11

    Wow, React has evolved, the loader function is one of the feature Sveltekit provides, it fetches data and render right before component mounted, this way we get better user experience because we don't need a loader indication and user won't see empty content. I think React is pushed to Server side render way, all these popular frontend frameworks has SSR capability right now in order to survive, because meta-frameworks such as Sveltekit, Next, Nuxt, Remix are taking over, it is good to know we can do this with React 😘

    • @ssumit196
      @ssumit196 Год назад +3

      but it doesn't provide cache and other features like react-query and swr right?

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

    You're the first guy I recommend to anyone I know when we come to programming staff,
    I question I this you can return your loader with a defer like
    return defer({ value: somethingHere });
    can you do a video on that too please.

  • @stefanmasic1287
    @stefanmasic1287 Год назад +3

    I'm just enjoying and learning. Super perfect. Thanks 1.000.000 times.

  • @Spyder22dz
    @Spyder22dz Месяц назад

    thanks for the tutorial , now my search bar works just fine with this loader method

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

    you are just master of all code i got all i need for the semester in just you 1 series of video thanks a lot your are really being helpful

  • @AmitKumar-cp6mx
    @AmitKumar-cp6mx Год назад +3

    I have a couple of questions?
    1) What if data fetching take some time?, how can we add spinner ?
    2) how to use data in other pages?
    Cuz fetching data everytime is a bad practice.
    (I think if we dispatch an action or setState in the rendered component then it can work otherwise we can't use hooks and rtk outside the react component)
    3.Can useLoader completely replace
    useEffect in data fetching?

    • @shineLouisShine
      @shineLouisShine Год назад +4

      I wish someone who knows the answers would have respond to you... 🧐

  • @emuemhonjieonosereme2495
    @emuemhonjieonosereme2495 11 месяцев назад +2

    Sir for this loader async function we use await but there is no try catch block.. What if the route localhost:4000/careers cannot be found ie it throws an error, will the react router automatically render the error element?

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

    Very nice tutorial about "React Router"! Hope you can make a series tutorials about "Remix Run" of React!

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

    Can't wait for you to do a SvelteKit 1.0 course, now that its officially released 😀👍

  • @AdsCity24
    @AdsCity24 Месяц назад

    That's a really great lesson course and easy to understand, good job Sir 🤩🤩. It'd be a salvation if you could make a tutotial on how to host a React App, as you are using react-router-dom hook. I am struggling on something called Client Side Rendering & Server Side Rendering (which returns a 404 page not found, in my case). Would appreciate, Sir ✨✨

  • @ggrlmon
    @ggrlmon Год назад +5

    I've been following your other videos and it really helped me have a better understanding of how react router works. Regrading loaders I think you missed one fundamental concept here, which is the wait time. Since you're loading your data from a static file there's no wait time. Using this loader approach when calling actual api's there would be a delay before the page renders. With the useeffect you can handle that delay by adding a spinner or something, informing the user that the page is loading. Is there a way to do that with the loader?

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

      use Suspense or state from useNavigation hook provided by React Router. let me know if this helped

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

      @@aymanechaaba Suspense component might help with his case as you mentioned

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

    Alternatively, you could put this in `your package.json` scripts section: `"start-db": "npx json-server --watch data/db.json --port 4000"` . To call it, just do: `npm run start-db`

  • @annametel9638
    @annametel9638 8 месяцев назад

    Thank you You are my favourit teacher!💓

    • @NetNinja
      @NetNinja  8 месяцев назад

      Wow, thank you! :) that means a lot

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

    is loader replaces useEffect hooks? I don't understand when to use loader function exactly can anyone explain?

  • @souviknag
    @souviknag 6 месяцев назад

    is this possible to call multiple loaders, passing the redux store?
    ......
    {
    path: "overview",
    element: ,
    loader: [viewLoader(store), viewWorkLoader(store)],
    }
    .......

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

    I watched the whole tutorial. Thank you!! Loaders seem to work well for /componentA/componentB/:id. My data, however, is dynamic so I cannot point to :id as the id may change as the data changes. So my path ended up /loader where useEffect loads the data into session memory then redirects to /componentA which reads the data from session memory. I could also useContext, but session memory works for now. Just pointing this out for others since it took me a while to realize it. Once you redirect all the state and params are gone!

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

    the end point created automatically but how it got the /careers from where it got this

  • @onigbindedavid6630
    @onigbindedavid6630 Месяц назад

    Please how do I use ds for firebase authentication since i can't use hooks with ds

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

    It would be much nicer if you could put any hooks inside loader. Now for example im wondering how the heck use lodaing screen while loader is fetching data :D

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

    How do you handle server errors with the useLoder hook?

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

    Hi
    I did all the steps but I'm getting this error :
    Failed to fetch
    Failed to load resource: net::ERR_CONNECTION_REFUSED
    What should I do?

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

    Is loader worth using over useeffect except the memory it saves us?

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

    Please create a Playlist about "Creating E-Commerce Website using Strapi , MongoDB, React , and Stripe"

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

    Actual information starts at 4:34

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

    Does anyone know how should I combine a React Router and RTK Query?
    RTK Query creates a Hook, should I use that hook on my loader function?
    Thx

  • @a13519
    @a13519 6 месяцев назад

    Your are the best on RUclips

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

    is there any way to have reduxTK deal with the request? like maybe dispatching an action from within careersLoaded? (~ @3:30) would that work?

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

    but what about error? what if error generate while making api req?

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

    I am trying to use useLoaderData in the other page, but the result is being read as 'undefined'. Does this mean that useLoaderData can be used only in the route component in which loader has been used. If yes, then how can I use the result returned in the other page? 🙏

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

      useFetcher()

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

    @3:41 does not work for me. Put up a comment but was deleted?

  • @ВіталійБілоус-э2в

    Try to add some latency and you will be wondered with this approach

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

    Does the loader function make useState and useEffect ways of fetching data sort of obsolete??

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

      I think the same!

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

    Amazing 😍. Just at the right time

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

      Hope it's helpful Taofeek!

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

    Isn't it a bad practice to fetch data from server every time we go to career page? Isn't it better to fetch it once with useEffect hook?

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

      Complete beginner here, but if you used useEffect to call the API, wouldn't it still need to call the API and fetch data from the server every time the career page is accessed?

    • @rumble1925
      @rumble1925 Месяц назад

      No don’t optimise prematurely

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

    Is this a good idea to put my authentication in the loader fn?

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

    Loader can be used with custom hook?

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

      Nope, it can't, it fetches data and render before dom mounted, it works kind of like sever side render.

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

      @@maskman4821 ok, thank you!

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

      i tried to use it with ContextAPI but i got an error saying ( i can't use 'useLoaderData' outside of a route ). suks but understandable

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

    Elooo. I think we could abandon react router, and turn our attention to tanstack.

  • @517nickyj
    @517nickyj Год назад

    Can you use the useLoaderData hook in subroutes and treat it as a sort of context for all child routes?

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

    Does anyone know how to use useContext in a loader function? I need to access some data in my global context but apparently you can't use hooks outside of a React component.

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

      It's impossible for the moment, or at least it's not suppose to be used there, router developers stated that loaders and actions was introduced in order to decouple fetching data and rendering, however there is voting to introduce this functionality like element: ... loader: ... context: ...

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

    how can i pass data to the loader fun?

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

    Why are you using Loaders to fetch data and not useEffect?

  • @lovelynduru-magnus3233
    @lovelynduru-magnus3233 9 месяцев назад

    I'm getting
    "assignment to undeclared variable res" when i click on the careers link. Am i missing something? @NetNinja

  • @Jamie-qz7vm
    @Jamie-qz7vm Год назад

    There is no outlet component specified .

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

    thx

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

    so good

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

    I am stil not sure why that hook is made, we can just make the same behaviour with useEffect.
    also what if it is used in real world where upload and download speed is a thing, there is no mentioned way to tell the user that "the app is not frozen but we are downloading something", while using useEffect everybody know how to handle it.

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

    Awesome video +++++++++++ 😀

  • @niraz9130
    @niraz9130 3 месяца назад

    9:30

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

    ♥️♥️✌🏻

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

    Anyone else getting """ Unhandled Thrown Error! -
    NetworkError when attempting to fetch resource. """ when entering localhost:3000/careers ?

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

      powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

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

      @@flyflor599 for some reason it does not work for me. it just says command not found

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

      getting same error output to browser, no errors in the terminal

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

      add "proxy": "localhost:4000/" in your package.json file. In your careers loader function use a relative path in your fetch command ('/careers') is stead of the whole domain path.

    • @hahahahm6003
      @hahahahm6003 8 месяцев назад

      use npx before the command he typed