React vocab explained: What is Concurrent React?

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

КОМЕНТАРІ • 34

  • @notshbn
    @notshbn 2 роки тому +16

    Sam, this is one of the best explanations of react vocab that I've seen or read yet. Thank you! Can't wait to see what's next

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

    This should be mandatory viewing for react developers

  • @danivicario
    @danivicario 2 місяці тому

    This is an excellent explanation. Thank you very much.

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

    Such a clear explanation, thank you!

  • @FishTalkFish
    @FishTalkFish 2 роки тому +2

    As a frontend engineer, I always love your videos, Sam! Great job on this one!

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

    Such a beast of a man. You let me grasp so much React knowledge in such a concise form,.

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

    Nice explanation! You have a new subscriber!

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

    Now I understand concurrent . Thanks for detail explanation

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

    I have watched this a couple of times now . Thank you for the detailed explanation as well as the links. This is a gem !

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

    Love your video. Best React 18 explanation for sure.

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

    Explained very well. Thank you Sam

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

    Gold descriptions man. Thanks a lot.

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

    Great video. Also your podcast is amazing. Thanks for doing this man.

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

    You're amazing! Thank you for the great content

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

    He deserves way more subscribers and views. Thanks for your effort man

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

    I made it this far 👏🏻 Would totally listen again!

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

    This was an awesome and clear explanation. Thanks Sam!

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

    Great content and very rich explanation !!!

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

    Great explanation of complex and confusing topics

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

    Love the explanation - thanks, Sam!

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

    This was really great!

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

    Been a fan since miragejs

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

    Very well explained.. Thanks

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

    Awesome video, Thanks a lot

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

    Nice video, Sam! I loved the example you gave on how to prepare a modal (or page) in the background. It would be really nice to see how to implement this. Do you think this is something you can do with existing APIs or is it still a concept that will be available in the near future (the offscreen component you mentioned)?

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

      Thank you so glad you liked it! is something the react team has mentioned they’re working on but it’s not ready yet. Definitely would love to make a video on it once it drops!

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

    There's been some discourse lately against useEffect for external side effects, where then do we do this side effects? Custom hooks?

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

    if you don't subscribe you missed everything up)) thanks

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

    Dear Sam,
    I was musing about the purity of the functional component in cases where we want to display a timestamp for example (not like a clock, where you have a setInterval, but simply the time you entered the page). To illustrate, say we have a `const [time, setTime] = useState(new Date());` inside a given component. Because we are calling `new Date()`, the component will not be pure. That is something I found myself doing many times and never though about problems with it since the code worked just fine.
    But now, your video made me think: what would be the implications of using an impure component like this with the concurrent mode? I imagine that once the render phase starts, the timestamp will be evaluated. But as the commit can be interrupted, the timestamp that will eventually appear on the screen can be deferred. Would that be correct?
    So, from now on, I will police myself to to handle situations like this in a better way. Maybe using an undefined initial state and then set the state inside the useEffect hook...
    Thanks!

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

      Great question! While it's true you may have not noticed bugs in your app today, it's possible you will in the future once you start adopting new concurrent features like Suspense and Transitions. This is why the React team has started urging all of us to learn more about purity and to make sure our components are pure. In your example, if you call new Date() just to render "You visited this page at 10:24am", you could actually still run into a problem: what if you render it on the server? Maybe the server's new Date() is 10:24:01 and then the client app is 10:24:02. So you have a mismatch. Now again, this might not cause a visible bug in your current app (though you might get a mismatch hydration error in your console), but conceptually, you can see that React actually doesn't have all the information it needs to be able to rerender your app consistently. Usually in these situations there's actually more business logic that is missing from your calculations. In your example, you want to display the time when the user first visited the page. So, "the user first visiting the page" is the part of the logic that's missing. It's implicitly assumed by "new Date()", but it would be better to encode it inside the actual component. So, you might solve this by using some state, or even a ref, to say, "the user just visited the page." Something like hasVisitedPage = useRef(). Now once the component successfully renders, perhaps inside of a useEffect, you can capture that time and store it in state. And now no matter how many times React needs to re-render your app or prepare it offscreen, it has that data. So you can see the time the component was rendered could be thought of as a side effect of rendering, which is exactly why it should go inside of useEffect. And now the component is pure and your app will always be consistent.
      That's me just kind of thinking out loud but in all of these situations I've run into in the past, it's usually the way to think about it. There's some piece of business logic that's missing from the code, and making that logic explicit rather than relying on it implicitly, improves the component and removes the impurities.
      Hope that helps!

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

    React is still catching up to Rich Harris performance breakdown. React is so slow and yet so many devs are still using it because it is popular and companies still hiring react devs. The best feature of React is "Hireability".

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

    Is the echo in your voice artificial? I find a bit too much. Nice content though!

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

      No, audio is hard + I'm still learning 😩 I think it's just the reverb from the room