When implementing a transition animation that effects many different elements, or many instances of the same Component, is there a best practice regarding where to control the animation? I have toyed with two different methods but I am not sure which is better.
One option is for the highest-up Component in the tree to create a Animated.Value that serves as a timer going from 0 to 1. It passes this timer down to descendants as a prop, and the descendants use Value.interpolate to do what they need to with it. This fits with the React design principle of moving state up, but passing around an Animated.Value as a prop feels odd (though it works fine) and the value always needs to be interpolated to be useful.
The other option is to pass down a boolean prop, like "isTransitioning." The descendants each hold their own Animated.Value and have a useEffect hook which starts the animation when isTransitioning switches to true.