Initialization 如何在Blazor webassembly应用程序启动时初始化变量?

Initialization 如何在Blazor webassembly应用程序启动时初始化变量?,initialization,blazor,startup,webassembly,Initialization,Blazor,Startup,Webassembly,在UWP中,我会在启动时以编程方式初始化显示变量,以便初始显示是我想要的,例如,基于年中某一天的值。在我的Blazor webassembly应用程序中,我无法在何处复制它。我当前设置了默认值,并要求用户单击一个按钮,该按钮计算并更新我要显示的值,然后继续 我本以为有一个标准的、简单的方法可以做到这一点,但考虑到Blazor片段是如何动态构建的,以便呈现为网页,也许不是?谢谢 这不是Blazor特有的,但是在任何类中,您都可以在组件的构造函数中创建代码/ 这里我有一个聊天组件,我把它分解成 Ch

在UWP中,我会在启动时以编程方式初始化显示变量,以便初始显示是我想要的,例如,基于年中某一天的值。在我的Blazor webassembly应用程序中,我无法在何处复制它。我当前设置了默认值,并要求用户单击一个按钮,该按钮计算并更新我要显示的值,然后继续


我本以为有一个标准的、简单的方法可以做到这一点,但考虑到Blazor片段是如何动态构建的,以便呈现为网页,也许不是?谢谢

这不是Blazor特有的,但是在任何类中,您都可以在组件的构造函数中创建代码/

这里我有一个聊天组件,我把它分解成

Chat.razor
Chat.razor.cs  
您可以通过添加与组件同名的类来创建chat.razor.cs,然后添加单词partial使其成为partial类:

partial class Chat : IBlazorComponent, IBlazorComponentParent, IDisposable
注意:这些界面仅适用于我的应用程序,我只是用部分代码显示该行。 你真的需要它吗:

partial class Chat
然后在我的构造函数中创建:

public Chat()
{
    // Perform initializations for this object
    Init();
}
我只是调用一个方法,您不必:

我的初始化方法:

 public void Init()
 {
     // do your initializations 
 }
也可以使用OnInitializedAsync

protected override async Task OnInitializedAsync()
{
    // load the Categories (example)
    this.Categories = await HelpCategoryService.GetHelpCategoryList()
}
或者这里有另一个我有时使用的方法:OnAfterRender

protected override void OnAfterRender(bool firstRender)
{
    if (firstRender)
    {
        ...
    }
}
相关文件如下:

也许这会给你一些想法。不确定标准,每个用例都是不同的


注意:我从未使用Blazor Web Assembly,只使用过服务器端Blazor,所以不确定WASM的具体功能,但我知道构造函数可以在任何C#类中工作。

我使用了OnInitializedAsync(),除了等待警告之外,我会发现它可以按我所希望的方式工作。非常感谢。