【发布时间】:2021-06-25 20:41:07
【问题描述】:
今天我对这个发现感到惊讶。 OnInitializedAsync() 上的 Blazor 布局调用在页面拥有 OnInitializedAsync() 之后被调用,当我想要获取用户设置并将它们缓存在 localStorage 中时会出现问题,以便以后每个页面都可以收集并根据此设置采取适当的行动。
应该是这样的吗?如果是,是否有任何解决方法可以使布局初始化在提交页面初始化之前结束?
或者还有另一种可能性,即:鉴于所有这些调用都是异步的(既节省了localStorage 和GET 的用户设置),可能有一个时间范围内一个任务完成得比另一个。
【问题讨论】:
-
您描述的是服务的工作,而不是布局。这些设置与向用户显示的内容无关,因此不应由组件或页面存储和管理。
-
所以您是在建议这项服务在每个页面上而不是在布局步骤中完成它的工作?
-
是的,Blazor 设计了几次传球。在 SO 上已经有很多关于它的问题,答案解释了为什么这是一个好主意,以及如果你愿意如何更改设置。
-
@Eugene 服务会自行完成这项工作,无论它是否被页面调用。单例服务将在创建其实例时完成其工作。另一种选择是创建一个配置源,将用户设置加载并存储到本地存储。您也不会尝试在 MVC 的布局页面中加载用户设置。
-
@PanagiotisKanavos 数据可以改变,它不是恒定的。
标签: c# blazor .net-5 blazor-webassembly