This was also our initial naive way how to chain things together.
We were ajax fetching using our implementation of very similar thing to redux-promise-middleware. Redux-thunk itself could help a lot, but there is a lot of importing if you want to reuse some handlers and keep parts of them DRY.
I like dispatching more redux actions in 1 go to not copy stuff in reducers, but your way of doing it in Solution 1 is not very good. You want to do just 1 function call in lifecycle components and than let redux-thunk fork it into multiple actual low level dispatches.
But with my research I also ended up in redux-saga universe.