Blazorで画面をマニュアル更新する
ナビゲーションに移動
検索に移動
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);
}
}