reactiveui - entre - usuarios ux ui
¿Cuáles son las distinciones entre los distintos métodos de WhenAny en la IU reactiva? (1)
Creo que entiendo cuándo y cuándo y cuándo.
Déjame demostrar a través de código:
// These two statements are 100% identical, but the latter looks nicer.
this.WhenAny(x => x.Foo.Bar, x => x.Value)
this.WhenAnyValue(x => x.Foo.Bar);
¿Qué pasa con WhenAnyDynamic, WhenAnyObservable, y ObservableForProperty?
WhenAnyDynamic
es como WhenAny pero cuando las cosas que desea observar no son constantes, es probable que no las necesite, pero sí las internas de RxUI.
WhenAnyObservable
permite obtener un Observable, pero no tiene que preocuparse por el cambio de objetos detrás de su espalda. Por ejemplo
this.SomeChildViewModel.MyCoolCommand
.Subscribe(x => Console.WriteLine("Clicked!"));
// Later...
this.SomeChildViewModel = new SomeChildViewModel();
// (Hey, why doesn''t my Clicked! handler show up anymore! I''m still subscribed
// to the old object but it''s super not obvious that''s what happened)
Versus
this.WhenAnyObservable(x => x.MyCoolCommand).
.Subscribe(x => Console.WriteLine("Clicked!"));
// Later...
this.SomeChildViewModel = new SomeChildViewModel();
// Cool, everything still works.
WhenAnyObservable es super útil en la vista para suscribirse a comandos.
ObservableForProperty
es como WhenAny pero no se dispara cuando se suscribe inicialmente. Probablemente deberías ignorarlo, en realidad es solo un bloque de construcción para WhenAny que existe por razones de compatibilidad.
Hay varios métodos de extensión en la interfaz de usuario reactiva para obtener observables para los cambios de propiedad.
Creo que entiendo cuándo y cuándo y cuándo. WhenAny es para una serie de notificaciones de cambio de propiedad en las que desea los metadatos de qué objeto y propiedad tuvo el cambio, mientras que WhenAnyValue es para cuando realmente solo desea la secuencia de valores cambiados.
En primer lugar, ¿es eso una evaluación precisa?
¿Qué pasa con WhenAnyDynamic, WhenAnyObservable, y ObservableForProperty? Realmente no puedo entender para qué son, o cómo son diferentes de los dos primeros. ¿Están todos destinados para uso público? ¿Cuál es su propósito?