Hacker News new | ask | show | jobs
by Rodeoclash 1396 days ago
This is the exact footgun I ran into yesterday:

https://codepen.io/rodeoclash/pen/poLqeYb?editors=1111

Even though `theState` is passed to the dependency array of the parent component which is tracking hidden images, it will still be stale!

After a while, I figured out that the child components, where the click originates from, also needed to have the map of deleted images passed to their dependency array. Total footgun.

1 comments

For this specific example the problem is that the handleClick callback is using a stale/cached onImageDeleted callback (which indirectly has old state). If you add onImageDeleted to the handleClick dependency array, it beings to work as you expect.
Would the dependency linter catch this? I assume yes?
Yep, it will flag any references to variables in the outer scope that it doesn’t know for certain are stable.
Ahh, that's interesting.