「Blazorで画面をマニュアル更新する」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「 Blazorではバインディング変数の値を更新しても画面が自動更新されないことがある。 そのような場合は明示的に「StateHasChange…」) |
(相違点なし)
|
2019年3月14日 (木) 04:06時点における最新版
Blazorではバインディング変数の値を更新しても画面が自動更新されないことがある。
そのような場合は明示的に「StateHasChangedメソッド」を叩いて手動更新するとよい。このメソッドはVisual Studio for Macのインテリセンスでは何故か出てこないが、ビルドも通るし、実行してもちゃんと動く。不思議。
実装例[編集 | ソースを編集]
Time.cshtml
<p>@now</p>
<input type="text" bind="@now" />
@using System.Threading
@functions
{
string now { get; set; } = "xyz";
protected override void OnInit()
{
var timer = new Timer(new TimerCallback(_ =>
{
// バインディング変数を更新
now = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
// 手動更新させる
this.StateHasChanged();
}), null, 0, 1000);
}
}