Immutable MVVM for React