The approach using states. Give us the power over the flows, over what will be rendered by the data, when us work with big applications. This approach seems me more easy for writing TDD/BDD and for maintain the low level of complexity.
I hope, help you.