彗星の状態管理
Comet is a .NET experiment inspired by Flutter and Swift UI for building cross-platform apps with C#.
Comet モデルビューの更新パターンの変更をThe Elm Architecture , Elmish , Fabulous など.MVUの主要な部分は以下の通りです.
モデル:アプリの状態
ビュー:ユーザーに表示される状態
UPDATE :メッセージ経由で状態を更新する方法
状態の定義
それぞれ
View
独自の状態があり、いくつかの方法で定義できます.最も簡単に使用することですState<T>
実装するクラスにフィールドをラップするにはINotifyPropertyRead .readonly State<int> count = 0;
ほとんどのビューは、おそらくより複雑な状態を持つでしょう、そして、あなたは同じ方法でそれを表すことができます BindingObject
を使用します.Cometプロジェクトテンプレートで確認できます.public class CometRide : BindingObject
{
public int Rides
{
get => GetProperty<int>();
set => SetProperty(value);
}
public string CometTrain
{
get
{
return "☄️".Repeat(Rides);
}
}
}
現在View
あなたはその単純なようにあなたの状態を宣言することができますint
最初の例ではreadonly State<CometRide> comet = new();
これは古い彗星サンプルで見ることができるコードと等価です.[State]
readonly CometRide comet = new();
ビューの状態の追加
コメットのすべてのUIは
View
, と[Body]
ビューの構造を返すメソッドを注釈します.これは我々の状態をUIに結びつける場所です.このような彗星乗り物を表示できます.[Body]
View body()
=> new VStack {
new Text(comet.Rides.ToString())
};
それぞれView
コンストラクタ引数の最小のセットを取ります、そして、ここで、我々は州のオブジェクトint
にstring
. 我々は、さらにこのようにするために、C .new Text(()=> $"{comet.Rides} rides taken.")
関数ラムダを使用しています()=>
はい.これはあなたの状態をコメットのビューにバインドする最適な方法です.今、それはいつでもそのプロパティを再評価することができます“彗星”の変更の状態をいつでもそのプロパティを適用します.ラムダを持たない前者の方法では、そのビュー全体が再現される必要があります.ビューの状態を変更する
これは彗星が他のMVU実装から分岐する顕著な場所です.メッセージと更新式典は合理化されます.この例でのライドカウントをインクリメントするには
Button
2つのコンストラクタ引数を取るビュー:タイトルのテキスト、およびアクションハンドラ.new Button("Increment", ()=>{
comet.Rides++;
})
When using
State<T>
without aBindingObject
you'll use.Value
to access the value you intend to change. Using the first example:()=> count.Value++
.
この状態の変化は再評価されるビューの本体をトリガーします.彗星は、仮想DOMを使用するので、これは非常に高速です.ビューのdifを作成し、変更を適用します.
彗星に乗る
より多くのビュー、およびフラックスなどの他のオプションを超えて状態を管理することについて言われるべきです.今のところこれは基本をカバーし、あなたが行く.
インストールし、いくつかの他の詳細を取得するには、私のチェックアウト.
そして、ボーナスのために、彗星、ジェームスクラーシーの著者は、参加しました.ネットマウイコミュニティスタンディングLiveStreamは、彗星と回答の質問については先週.楽しむ!
Reference
この問題について(彗星の状態管理), 我々は、より多くの情報をここで見つけました https://dev.to/davidortinau/managing-state-in-comet-4gpoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol