ReactiveProperty v9.1 をリリースしました
ReactivProperty v9.1 をリリースしました。
今回のアップデートの対応は主に Blazor で ReactiveProperty を使用する場合の機能改善になります。
-
ValidatableReactiveProperty<T>
でForceNotify
を呼び出した際に正しくバリデーションが行われないケースがあった問題を修正 -
ICommand
にCanExecute
と逆の結果を返すIsDisabled
拡張メソッドを追加しました -
ReactivePropertiesValidator
コンポーネントでValidatableReactiveProperty<T>
に対応しました
更新内容ピックアップ
IsDisabled
拡張メソッド
コマンド系クラスに関する IsDisabled
拡張メソッドも追加しています。こちらは CanExecute
メソッドと逆の結果を返す拡張メソッドになります。button
などで disabled
属性に使用することを想定しています。
あっても無くても大差ないといえばそうですが、あったほうが便利なので追加しました。以下のように使用します。
<button
@onclick="() => someViewModel.SomeCommand.Execute()"
disabled="@someViewModel.SomeCommand.IsDisabled()">
Click Me
</button>
IsDisabled
がない場合は disabled=@(!someViewModel.SomeCommand.CanExecute())
のように書きますが、括弧があるのが地味にめんどくさいので拡張メソッドとして追加しました。
ReactivePropertiesValidator
コンポーネントの改良
ReactiveProperty v9.0.0 で ValidatableReactiveProperty<T>
を追加しました。個人的には ReactiveProperty<T>
は今後 ReactivePropertySlim<T>
と ValidatableReactiveProperty<T>
に置き換える方がよいと考えています。
ここで問題になるのが利用者は少ないと思うので、誰からも突っ込まれてはいないのですが Blazor の EditForm
のバリデーション機能と ReactiveProperty<T>
のバリデーション機能を連携させるための ReactivePropertiesValidator
コンポーネントに対して ValidatableReactiveProperty<T>
の場合でも正しく動くようにしました。
今回は、これで Blazor で ReactiveProperty を導入する場合でも ReactiveProperty<T>
は、使うことが無くなると思います。
Blazor で ReactiveProperty 使うメリットあるの?
WPF とかほどではないですが ViewModel 的なレイヤーを設けるのであれば、そこそこ使えると思います。
Blazor は変更通知とかなくても普通に画面更新はちゃんとされたりするので、あまり ReactivePropertySlim<T>
や ValidatableReactiveProperty<T>
の恩恵は感じないケースが多いと思いますが AsyncReactiveCommand
などは実行可否を複数コマンドで同期とったりできるので便利だと思います。
まとめ
ということで v9 系はひと段落です。あとはドキュメント類を…。
Discussion