Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't bother comparing constructor when deps are not provided #14594

Merged
merged 3 commits into from
Jan 17, 2019

Commits on Jan 17, 2019

  1. Don't bother comparing constructor when deps are not provided

    When no dependencies are passed to an effect hook, what we used to do is
    compare the effect constructor. If there was no change, then we would
    skip firing the effect. In practice, this is a useless optimization
    because the constructor will always be different when you pass an inline
    closure. And if you don't pass an inline closure, then you can't access
    any props or state.
    
    There are some edge cases where an effect that doesn't close over props
    or state could be useful, like reference counting the number of mounted
    components. But those are rare and can be addressed by passing an empty
    array of dependencies.
    
    By removing this "optimization," we can avoid retaining the constructor
    in the majority of cases where it's a closure that changes on
    every render.
    
    I made corresponding changes to the other hooks that accept
    dependencies, too (useMemo, useCallback, and useImperativeHandle).
    acdlite committed Jan 17, 2019
    Configuration menu
    Copy the full SHA
    94d92a8 View commit details
    Browse the repository at this point in the history
  2. Improve hook dependencies warning

    It now includes the name of the hook in the message.
    acdlite committed Jan 17, 2019
    Configuration menu
    Copy the full SHA
    62e1048 View commit details
    Browse the repository at this point in the history
  3. Nits

    acdlite committed Jan 17, 2019
    Configuration menu
    Copy the full SHA
    c7d8ebc View commit details
    Browse the repository at this point in the history