尝试使用最新模板生成的解决方案。
。
protected override async Task OnInitializedAsync()
{
await Task.Run(() =>
{
this.svc.Add("string one");
this.svc.Add("string two");
});
await Task.Run(() => StateHasChanged());
}
在NavMenu.razor的html片段中,我很容易尝试打印
使用上面的代码,我看不到计数得到更新/刷新, 我也可以在MainLayout中有另一个按钮处理程序来调用 svc.Add方法,但计数不会更新。
仅,当我尝试在navMenu.razor中添加一些btn处理程序时,blazor会重新渲染自身
<button @onclick="SetCurrentTime"> Time </button>
<h4>@time</h4>
void SetCurrentTime()
{
time = DateTime.Now.ToLongTimeString();
}
此问题的github存储库:(命中AddString,计数器应增加)https://github.com/pkaushik23/mycodeshares/tree/master/CheckRefreshBlazor
答案 0 :(得分:1)
您的 (venv) username@myubuntu:~/Projects/MyProject/$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
asn1crypto (0.24.0)
cryptography (2.1.4)
decorator (4.1.2)
enum34 (1.1.6)
idna (2.6)
ipaddress (1.0.17)
keyring (10.6.0)
keyrings.alt (3.0)
networkx (1.11)
numpy (1.13.3)
pip (9.0.1)
pycrypto (2.6.1)
pycryptodome (3.9.0)
pygobject (3.26.1)
pyxdg (0.25)
PyYAML (3.12)
rubber (1.4)
SecretStorage (2.3.1)
setuptools (39.0.1)
six (1.11.0)
wheel (0.30.0)
应该通知更改。在Invoke component methods externally to update state
对于您的服务代码,类似:
NameService
在您的组件上:
public class StringService
{
public event Func<string, Task> Notify;
public List<string> Names { get; set; } = new List<string>();
public void Add(string s)
{
this.Names.Add(s);
if (Notify != null)
{
await Notify.Invoke(s);
}
}
}