Look at this code (blazor server page):

```
@page "/"

<div>@str</div>

<button @onclick="eventArgs => { OnClick(); }">Hello</button>

@code
{
   private string str { get; set; }
   private void OnClick()
   {
      str = "Hello world";
   }
}

```

This code works perfectly. I can see "Hello world" on my page when i click on the button.

Now look at this code:

```
@page "/"

<div>@str</div>

<button @onclick="eventArgs => { OnClick(); }">Hello</button>

@code
{
   private string str { get; set; }
   private async Task OnClick()
   {
      await ReadDataBase();
      str = "Hello world";
      StateHasChanged();
   }
}

```

I do not understand why but the str is not refreshed immediately if i do not put StateHasChanged(). My question is ... why ?

Thanks