Thanks for the troughtfil article. Refs are awesome, as well as examples provided by you.
Two moments:
calling setState in the render body will cause the result of the current render to be rejected and component to be rendered again. So double render, but a single commit.
changing refs outside of useEffect is not always ConcurentMode or (Strict) compatible as corresponding Effects might be not triggered. In general one should be very accurate, ideally prefer double rendering over hard to trace bugs. See github.com/stripe/react-stripe-js/...
Thanks for the troughtfil article. Refs are awesome, as well as examples provided by you.
Two moments:
setState
in the render body will cause the result of the current render to be rejected and component to be rendered again. So double render, but a single commit.useEffect
is not alwaysConcurentMode
or (Strict) compatible as corresponding Effects might be not triggered. In general one should be very accurate, ideally prefer double rendering over hard to trace bugs. See github.com/stripe/react-stripe-js/...By render you mean DOM update here? Because the render function and everything that is within will be executed twice.
Oh, interesting! In this case, if this causes problems, the refs-based logic can be moved into
useEffect
, still no need in duplicated renders.