Immutable Model-View-ViewModel for React