The React Show

A podcast focused on React, programming in general, and the intersection of programming and the rest of the world. Come join us on this journey.

Listen

[31] React Component Lifecycle, What is a Component?

We’re always working with components, but do we know when they mount or unmount or even what that actually means? Do we know how effects play into the lifecycle of a component? On this episode, we’re going to...


We’re always working with components, but do we know when they mount or unmount or even what that actually means? Do we know how effects play into the lifecycle of a component? On this episode, we’re going to take a close look the lifecycle of a React component; what it is made up of and how it interacts with the rest of your program.

Links

Show Notes

  • Intro
  • Overview
  • Background
    • Story about defining a component inside of a component (starts with tests/cypress)
      • React has to check if the definition of a component has changed
    • What actually is a component?
      •  Nothing more than a function with bookkeeping
    • Lifecycle
      • Mounting
        • Default state/props
      • Updating
        • Runs function code but doesn’t use default state/props
        • Updates the DOM when complete
          • other than useLayoutEffects
      • Post-Updating / Effects
        • useLayoutEffect, synchronous, after DOM update but before paint
        • Runs hook code sometime after component code completes running and DOM is updated, asynchronous
      • Unmounting
        • Hook cleanup
    • lexical scope
  • Solutions
    • Creating lifecycle methods with useEffect properly
      • useLayoutEffect vs useEffect
      • Dependency array
      • useOnce (similar to onMount)
        • Similar to onMount but different because uses useEffect vs useLayoutEffect
        • useRef - ref.current will be undefined on first run
        • set ref.current to true after running hook code
      • onUnmount
        • AFAIK there is no way to on unmount in a function component
        • But you shouldn’t need to, if you use cleanup effects properly
    • Updating State
      • Prefer updating in event handlers vs useEffect
        • Event handler is more synchronous/easier to reason about
    • Divisions between components/how to divide up your components/hooks
      • Should this influence how we divide up our components?
        • Generally no, abstractions should, not mechanics or performance
  • Tangent: best practices
  • Summary

Support the show