Great write up! For most cases, DDAU is very beneficial. I don’t use if for propagating input changes (two-way is simpler here) and such, but for actions and, for example current user data, passing data from a controller can help with a few things:
-
Testing. When components are dumb, integration tests become that much simpler. If you write all your code with accompanying tests, it is necessary to write production code that is easy to test as well and this is one way to do it.
-
Refactoring. With actions and some data coming from a single source of truth, when the various child components are refactored, it simply requires a change in the API of the child components rather than moving the source of truth to different levels (to the refactored child components).
-
Synchronization of data. It is because an app gets sufficiently large that a single source of truth become an ally. If you are adding, modifying and deleting data in ChildComponent when that data belongs to the Controller, tracing down data issues becomes very complex. This is esp true if Child and ParentComponent are modifying the same source of data that belongs to a controller.