I'm building an Angular 2 ngrx/store application and trying to understand best practices.
- I love having an immutable state that changes only based on dispatched actions so that the app state is very clear and debug-able.
- I love one-way data flow down from "smart" containers since this allows us to use the async pipe to do less checking of state.
But I don't understand why we would want to "bubble up" events from dumb components all the way up to smart components before dispatching an action to the store. Is the only reason to have re-usable components? It seems to me that most components aren't re-used anyways cause there aren't many situations when I would want to have everything identical including the CSS. Are there any other benefits I'm missing? From the point of view of maintainability / readability, isn't it nicer to be able to just see the action dispatched right at the component where the interaction is happening?