I've taken a different approach for similar needs in the past... I have the current window size and scroll position in my state, and have windows events for resize/onscroll update said values... from there, I can have pure rendering that uses the values... Also, but centralizing the size/position values, I can have multiple components that handle their rendering as appropriate internally.
Very cool. We do something very similar on Instacart's site. Our main Redux store and header component track window size and scroll position so that all components on the site have that info and can react to if they need. Works wonderfully!
Agreed, I didn't show it, but only have a single reducer handle those actions... I have state.window.{size,position} that keeps those values, that several components can then use for rendering.
I'm still curious as to when/if we may see the likes of aphrodite really take off.