问题可能出现在缺少设置ChangeNotification()。 建议根据以下示例代码检查设置是否正确:
在 Razor 组件中:
@code {
private string ImageSrc { get; set; }
private async Task LoadImage()
{
// Load image from a source
var imageData = await SomeService.GetImageDataAsync();
ImageSrc = $"data:image/png;base64,{Convert.ToBase64String(imageData)}";
// Call StateHasChanged
this.StateHasChanged();
}
protected override async Task OnInitializedAsync()
{
// Call LoadImage on component initialization
await LoadImage();
}
}
在后台代码中:
public async Task GetImageDataAsync()
{
// Return image byte data from an external source
// Make sure to notify the client that component state is updated after loading new image data
await Task.Delay(500);
return await SomeService.GetImageBytesAsync();
}
如果ChangeNotification没有正确设置,建议添加以下代码段:
public async void SetChangeNotification()
{
while(true)
{
this.StateHasChanged();
await Task.Delay(500);
}
}
protected override async Task OnInitializedAsync()
{
// Call SetChangeNotification on component initialization
SetChangeNotification();
}
通过上述步骤,应该可以解决Blazor(服务器)使用StateHasChanged()不更新图像的问题。