Understanding React's UI Rendering Process

This talk by Anthony Garritano (Senior Software Engineer at CrossComm) examines how React implements a Virtual DOM to quickly render changes to the user interface. By the end of this talk the audience will know the basics of UI rendering with JavaScript through a Virtual DOM, understand React’s Reconciliation (the process of determining which Virtual DOM nodes should be turned into real DOM nodes) and have more confidence about the frontend technology decisions they make in their roles.

Пікірлер: 123

  • @cloudkungfu
    @cloudkungfu3 жыл бұрын

    So happy that the examples are of functional components

  • @anandyadav_

    @anandyadav_

    3 жыл бұрын

    😂😂

  • @DEVDerr

    @DEVDerr

    3 жыл бұрын

    Does it really matter tho?

  • @VividElites

    @VividElites

    3 жыл бұрын

    @@DEVDerr Yes, there's no need for the extra syntax in class components, just distracting to the eyes from the topic at hand

  • @kennyngo8706

    @kennyngo8706

    2 жыл бұрын

    @@DEVDerr Yeah, lifecycle methods vs hooks

  • @ninadsonawane1970

    @ninadsonawane1970

    2 жыл бұрын

    yeahh huge relief. this this this fucking "this" scares me

  • @anapartybharath33
    @anapartybharath333 жыл бұрын

    Except the little audio problem. Overall great talk !

  • @samatzhetibaev8045
    @samatzhetibaev80452 жыл бұрын

    1:32 HTML & the DOM 3:54 Components and elements 11:52 Shadow DOM? 12:10 Reconciliation 23:25 Rendering 25:37 React Fiber 28:05 Conclusion

  • @WildHowlYT
    @WildHowlYT Жыл бұрын

    In my opinion, every React Developer should watch this. Very insightful, good job!

  • @jayribagchi2182
    @jayribagchi218210 ай бұрын

    Such an awesome talk with so much of clarity! The technical nuances are hard to make anyone understand, and he did the job pretty pretty well. Thankyou for putting this out, for free. So so much to learn!🎉🎉

  • @PlamenTsilkov
    @PlamenTsilkov3 жыл бұрын

    Great stuff. Really liked the keys explanation.

  • @sandipkundu5887
    @sandipkundu58873 жыл бұрын

    As I am really new to react doing my hands-on this talk gave me a lot of confidence and knowledge as well as interest

  • @vijayroy93

    @vijayroy93

    3 жыл бұрын

    let's learn it together it's good to have react mate 👍

  • @sajadtorkamani9399
    @sajadtorkamani93992 жыл бұрын

    Awesome talk. This helped me a ton. Thank you!

  • @pptxn-tv4419
    @pptxn-tv4419 Жыл бұрын

    TNice tutorials is one of the best intro soft softs I've ever seen. The entire basic worksoftow with no B.S.!

  • @soy1700
    @soy17002 жыл бұрын

    Great talk. One thing worth noting, when React is diffing list items that came from a .map(), inserting a function call like uuid() into the key property will cause rerenders everytime. The UUID will change between renders because the key is actually calling UUID every time the component's code is executed. You can fix this by instead generating a UUID for the object and persisting it in some state, much like you would with an ID property - which shouldn't be a big deal if you're generating the object from the frontend anyways. Just make sure not to call the function in place of the key -> add a persistent value instead.

  • @sahilkazi4518

    @sahilkazi4518

    2 жыл бұрын

    didn't get you, can you please ellaborate or point to a resource that does?

  • @soy1700

    @soy1700

    2 жыл бұрын

    @@sahilkazi4518 tl;dr - avoid ever doing something like key={uuid4()} in a React list item. The key will change on every rerender of the component, because uuid4() will be called every time. When uuid4() is called upon a rerender, the list item that you set key={uuid4()} will also be rerendered, defeating the purpose of having set a key in the first place. The purpose of keys is to improve efficiency by letting React know that your list item hasn't changed, and thus doesn't need to be rerendered. If your key is a random non-persistent value every time React looks at it, it will be rerendered every single time. This is why people often use an ID property to define a key. ID's are persistent (they will be stored in an array in state somewhere) and they are unique. You need both persistence and uniqueness for a key to work as intended

  • @kevinbatdorf

    @kevinbatdorf

    2 жыл бұрын

    More important to not use the index from a map function as the key

  • @germanaquila2666

    @germanaquila2666

    2 жыл бұрын

    @@kevinbatdorf why not?

  • @kevinbatdorf

    @kevinbatdorf

    2 жыл бұрын

    @@germanaquila2666 Because if the order of the objects change and the key is the index, React wont render it properly.

  • @edwinsandoval4563
    @edwinsandoval45632 жыл бұрын

    Thanks for sharing this presentation, great work !

  • @daniel7007
    @daniel70072 жыл бұрын

    The best explanation of React ever!🔥🔥🔥🔥

  • @nikosspiropoulos8417
    @nikosspiropoulos8417 Жыл бұрын

    This is awesome, thanks for the detailed explanation

  • @shalin1
    @shalin14 ай бұрын

    Anthony is genius. The talk was super helpful and informative as well, Thank you very much guys.

  • @Lahiru_Udana
    @Lahiru_Udana3 жыл бұрын

    Great talk. Thanks

  • @HimanshuKumar-xz5tk
    @HimanshuKumar-xz5tk3 жыл бұрын

    This is gold. I wish he talked how diffing algorithm actually worked.

  • @anujjosh
    @anujjosh2 жыл бұрын

    Great talk Jake Peralta!

  • @andriiv7033
    @andriiv7033 Жыл бұрын

    This is pretty good for beginners. It’d be good to know how Fiber works in details, for instance.

  • @hassaannoor
    @hassaannoor2 жыл бұрын

    You cleared a lot of concepts that just didn't make sense to me earlier.

  • @iedi3
    @iedi34 ай бұрын

    awesome, i need more videos like this, deep stuff

  • @fasolplanetarium
    @fasolplanetarium2 жыл бұрын

    Excellent talk, thanks!

  • @Gruby7C1h
    @Gruby7C1h3 жыл бұрын

    Really good talk!

  • @ulviugur3605
    @ulviugur36052 жыл бұрын

    Thanks a lot !!, good attempt to de-mistify the topic ! I would have preferred to see a visual summary of what happens when X changes, X being DomElement Type, keys, primitives or object values from lement props, etc. Also liking them with hooks would have been "future-proof" :)

  • @abrorxalilov2550
    @abrorxalilov25502 жыл бұрын

    Great talk, thanks a lot!

  • @Hamzakhan-kx2ql
    @Hamzakhan-kx2ql2 жыл бұрын

    thank you for sharing this presentation.

  • @edchelstephens
    @edchelstephens2 жыл бұрын

    Wow! Great talk!

  • @phoe7ix
    @phoe7ix11 ай бұрын

    Awesome stuff, thanks!

  • @sidharthvyas5883
    @sidharthvyas58832 ай бұрын

    Awesome talk, thnx alot

  • @Vilhena6969
    @Vilhena69693 жыл бұрын

    Great talk :)

  • @maksympinchuk9057
    @maksympinchuk90573 жыл бұрын

    Thank you, guys, thumb up from me!

  • @rahulshekhar8498
    @rahulshekhar8498 Жыл бұрын

    I been through loads of video's about soft . but you are the best thanks for your video's.

  • @sensingturtle
    @sensingturtle3 жыл бұрын

    Super helpful!

  • @kikevanegazz325
    @kikevanegazz3252 жыл бұрын

    GREAT TALK!

  • @leonardoweber5096
    @leonardoweber5096 Жыл бұрын

    great lecture!

  • @mkkosmkkos7389
    @mkkosmkkos73893 жыл бұрын

    true hidden gem

  • @ChrisAthanas
    @ChrisAthanas3 жыл бұрын

    Very useful talk

  • @thecoder1631
    @thecoder163111 ай бұрын

    fiber talk, that's actually react Suspense now and we can actually do that. so cool.

  • @haseebali3810
    @haseebali38103 жыл бұрын

    Informative ⚔️

  • @pq6688
    @pq66882 жыл бұрын

    Great talk

  • @akash.deblanq
    @akash.deblanq Жыл бұрын

    everyone in the audience is like the same person, same dress, no expression, same messy hair 🥲

  • @trueuchiha2042
    @trueuchiha20422 жыл бұрын

    well explained!

  • @paxdriver
    @paxdriver2 жыл бұрын

    This dude should have done way more talks by now. On Symbols, on "this" binding, and service workers and stuff.

  • @sunnypaul299
    @sunnypaul2992 жыл бұрын

    great talk

  • @funkybuddha1598
    @funkybuddha15982 жыл бұрын

    key={index} root of all my problems!!!! Thank you!

  • @LorandPalfalvi
    @LorandPalfalvi2 жыл бұрын

    Amazing talk! Thank you allot! But at some point I thought I forgot playback speed at 1.25

  • @sabuein
    @sabuein Жыл бұрын

    Thank you.

  • @gershomnsengiyumva6572
    @gershomnsengiyumva6572 Жыл бұрын

    wonderful

  • @abhinavkant
    @abhinavkant Жыл бұрын

    Need more videos of him

  • @alexxu7542
    @alexxu75422 жыл бұрын

    interesting video!

  • @vishnuojha298
    @vishnuojha298 Жыл бұрын

    Learn lot from the video...

  • @enfieldli9296
    @enfieldli92962 жыл бұрын

    A good source material help me understand the component mounting and useEffect thing

  • @MichaelCampbell01
    @MichaelCampbell013 жыл бұрын

    Good preso; explained a lot. Is it safe to say in functional components, when a state changes via useState, the entire function (so, the entire component) gets re-run? If so, if I have a "const thing = this_depends_on_state()", thing will get recalculated when the state changes?

  • @davidchang3782

    @davidchang3782

    3 жыл бұрын

    Yes! Everything would get re calculated again

  • @HorizonHuntxr

    @HorizonHuntxr

    3 жыл бұрын

    Yes but only the part of the component that depends on that piece of state would get re-rendered.

  • @adventurer_v
    @adventurer_v3 жыл бұрын

    Title: "understanding react rendering". Min 26, "I actually don't know how react rendering really works with Dom" 😁

  • @adventurer_v

    @adventurer_v

    3 жыл бұрын

    But it's though fiber!

  • @o.h.n.o.
    @o.h.n.o. Жыл бұрын

    Can anyone tell me if React still has this $$typeof: Symbol(react.element) for every element? I tried logging a react element (sandbox) but did not find this. I found _owner and _store instead

  • @rickharold7884
    @rickharold78843 жыл бұрын

    Cool

  • @cloudkungfu
    @cloudkungfu3 жыл бұрын

    Mustache moste powerful!

  • @ObinnaWGMI
    @ObinnaWGMI3 жыл бұрын

    No lie I clicked on this thinking it was an iDubbz video

  • @JakeJJKs
    @JakeJJKs2 жыл бұрын

    great talk, despite the wrong prioritization of star trek vs star wars vs space balls. lol, jk. I got a lot out of it! :)

  • @AjayKumar-id7mb
    @AjayKumar-id7mb Жыл бұрын

    I am also facing the same problem

  • @siddharthpatel6009
    @siddharthpatel60093 жыл бұрын

    As far as i know only class components have instances.

  • @danieltkach2330

    @danieltkach2330

    2 жыл бұрын

    I think so, because technically they are objects. But functional components are functions. I will get React some day ha!

  • @taofeng5769
    @taofeng576911 ай бұрын

    what are immersive apps?

  • @pratikkumar939
    @pratikkumar9392 жыл бұрын

    Did not get much info about how React fiber works...

  • @smrpkrl
    @smrpkrl10 ай бұрын

    6:07

  • @blackdeckbox
    @blackdeckbox3 жыл бұрын

    Idubbbz? Did you change your career?

  • @prakhartiwari7537
    @prakhartiwari7537 Жыл бұрын

    problems and than volu automate the boi cuz I didn’t know how to sidechain. My one buddy produces riddim and he legit saw my daw

  • @TJPBataller
    @TJPBataller18 күн бұрын

    Didn't understand a thing. any other video recommendation?

  • @sundar_panda
    @sundar_panda3 жыл бұрын

    I did not know John Abraham knows reactjs

  • @gonzalowilliams
    @gonzalowilliams2 жыл бұрын

    you talk at the edge of youtube normal speed

  • @SarbjeetJohal
    @SarbjeetJohal2 жыл бұрын

    He knows what he is talking about but it assumes some dev experience to follow.

  • @heiheichan638
    @heiheichan6382 жыл бұрын

    He kinda looks like idubbbz

  • @thatsalot3577
    @thatsalot35772 жыл бұрын

    IDK why but the video looks like it's from 2011.

  • @cya3mdirl158
    @cya3mdirl1582 жыл бұрын

    Backend systems are more complicated and interesting. This talk is about Virtual 🏡 which is also interesting and also very simple concept.

  • @anirbanmaji80
    @anirbanmaji803 жыл бұрын

    Why is the speaker using so much cuss words? 😁 Just kidding. Great talk.

  • @atsourno
    @atsourno3 жыл бұрын

    Thumbs up if you were using key = { index } the wrong way.

  • @equallyavant
    @equallyavant3 жыл бұрын

    Sponsored by plaid shirts

  • @the_BetaDev
    @the_BetaDev3 жыл бұрын

    Why the children do not have $$typeof property?

  • @Jacktherippler1

    @Jacktherippler1

    3 жыл бұрын

    he did around minute 8

  • @thomasstambaugh5181

    @thomasstambaugh5181

    3 жыл бұрын

    @@Jacktherippler1 I have the same question. I reviewed the talk from 7:45 to 8:30, and didn't see or hear the answer. If you're around, could you perhaps offer a brief answer in plain text?

  • @Jacktherippler1

    @Jacktherippler1

    3 жыл бұрын

    @@thomasstambaugh5181 i didnt point it out but the component is a react element while the h1 is an html element. i guess u can proof it when creating a component inside a component so lets say, reactTableComponent -> contains reactTableRowComponent -> contains labels, and inspect it. also he said its for react components to add a security feature like an uuid. hope that helps

  • @thomasstambaugh5181

    @thomasstambaugh5181

    3 жыл бұрын

    @@Jacktherippler1 : Got it, thanks.

  • @chillimilli5116

    @chillimilli5116

    3 жыл бұрын

    @@Jacktherippler1 thanks a lot mate. Cheers.

  • @spinningaround
    @spinningaround Жыл бұрын

    Unnecessary complication. Browsers need new language!

  • @olezhonnv3215
    @olezhonnv32152 жыл бұрын

    Ok, so it is expensive to manipulate the DOM. But React must manipulate the DOM to render a component. So, without react, you manipulate the DOM. And, using react, you indirectly manipulate the DOM. But react adds its virtual dom and reconciliation in addition to actual DOM manipulations. Where is the performance? DOM MUST be manipulated, with react or without react.

  • @type3gaming851

    @type3gaming851

    2 жыл бұрын

    With the help of virtual dom it knows what to manipulate and what doesn't need to change. Without react even for a small change the DOM is getting rendered from scratch.

  • @type3gaming851

    @type3gaming851

    Жыл бұрын

    @@andTutin Yes you are right, it's been a long time since I've made that comment lol. Now i know.

  • @type3gaming851

    @type3gaming851

    Жыл бұрын

    @@andTutin prove what

  • @type3gaming851

    @type3gaming851

    Жыл бұрын

    @@andTutin Yeah bruh that's not happening, earlier sometime told me that so i believed. Now i know i was wrong. You can chill.

  • @RogerFederer777
    @RogerFederer7773 жыл бұрын

    I am surprised how much he swears given that it's a conference talk...

  • @wonton1019

    @wonton1019

    3 жыл бұрын

    I didn’t notice

  • @lifeinthebigcity37

    @lifeinthebigcity37

    3 жыл бұрын

    thats why the audio was muted at some points.

  • @zahar1381
    @zahar1381 Жыл бұрын

    владилен?

  • @PavanMuppala
    @PavanMuppala3 жыл бұрын

    this looks like flutter

  • @narayanchoudhary6950

    @narayanchoudhary6950

    2 жыл бұрын

    No flutter looks like this

  • @THEkarankaira
    @THEkarankaira3 жыл бұрын

    popatlal?

  • @rustalisin8950
    @rustalisin89503 жыл бұрын

    all good, but when talking about key & ref string option, why not say why null is used for beginners Assume nothing, it costs u 5 sec , how do u use it with null ? thats what views need .. also to "access a 3rd party library writing attributes to a DOM node" WTF how about this is where u put a hook or address reference to access a 3rd party lib.. why do good scripters confuse the fine detail ? "we have a h1 , an ID as title, & we return it. in teaching simple component, a new user asks why do u return it before calling it ( ) the 1st line = ( ) => needs 5 sec clarity, as when a component runs State / Procs or Props.. a constant living organism? scary (explain how that component comes to life , How hard is it

  • @frostbite8238
    @frostbite82389 ай бұрын

    Audio is breaking for this video.

  • @mrCetus
    @mrCetus2 жыл бұрын

    Except the little audio problem. Overall great talk !

  • @hhlohmann3881
    @hhlohmann38813 жыл бұрын

    If you usually change content by innerHTML, then you SHOULD switch at least to a library doing stuff for you

  • @hhlohmann3881

    @hhlohmann3881

    3 жыл бұрын

    If you are unsure how to use a library, you are one for a framework

  • @hhlohmann3881

    @hhlohmann3881

    3 жыл бұрын

    You might or need not to be the one to think about "Is it a library or a framework?"