【问题标题】:Initialize context data on Blazor WASM app start在 Blazor WASM 应用启动时初始化上下文数据
【发布时间】:2021-10-22 15:06:14
【问题描述】:

我正在开发一个基于任务的应用程序,我想在用户看到应用程序之前加载“上下文”数据,如任务名称、用户信息(如姓名、语言和其他内容)。

在哪里可以做到这一点?如果我在 App.razor 的 OnInitializedAsync 中加载数据,则数据仅在应用程序可见后才存在。如果我根据接收到的语言设置文化,则组件已经以错误的文化呈现。每个教程都提到 Program 类是从一开始就设置 Culture 的地方。有没有办法在设置文化对初始渲染有影响的时候进行和等待这个 WebApi 调用并填充这个数据?

【问题讨论】:

  • 为什么不使用标准“加载”设置的某些版本,在所有相关内容加载和设置之前显示某种加载器消息/图标/微调器?跨度>

标签: blazor blazor-webassembly


【解决方案1】:

把它放在 MainLayout.razor 的 OnInitializedAsync() 方法中

您的代码可能看起来像这样

MainLayout.razor

<CascadingParameter Value="@mandate">
<div class="p-4">
 @if(loading)
 {
    <p> Loading .... </p>
   
 }else
 {
    @Body
 }
</div>
</CascadingParameter>

@code
{
   Mandate mandate; // Assuming some Mandate class which holds information
   bool loading;
   protected override Task OnInitializedAsync()
   {
     loading = true;
     mandate = await LoadMandate(); /// load preferences from the database etc 
     loading = false;
   }

}

理想情况下,将此部分推送到服务并在那里加载。

【讨论】:

  • 虽然我喜欢一般数据的想法,但它不适用于该语言。如果我在主要组件(在我的情况下为 App.razor)的OnInitialized 中添加以下内容,则 IStringLocalizer 在所有组件中使用了错误的语言。如果我在RunAsync 之前将这些行放在 Program.cs 中,它会起作用: CultureInfo.CurrentCulture = "fr-CH"; CultureInfo.CurrentUICulture = "fr-CH"; CultureInfo.DefaultThreadCurrentCulture = "fr-CH"; CultureInfo.DefaultThreadCurrentUICulture = "fr-CH";
  • 对于本地化的具体问题,可以不用这个吗? docs.microsoft.com/en-us/aspnet/core/blazor/…
猜你喜欢
  • 2021-05-07
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
相关资源
最近更新 更多