【问题标题】:How do I initialize variables at startup in a Blazor webassembly app?如何在 Blazor webassembly 应用程序启动时初始化变量?
【发布时间】:2020-09-20 08:58:56
【问题描述】:

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

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

【问题讨论】:

    标签: initialization blazor startup webassembly


    【解决方案1】:

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

    这里有一个聊天组件,我将其分解为

    Chat.razor
    Chat.razor.cs  
    

    你通过添加一个与你的组件同名的类创建的 chat.razor.cs,然后添加单词 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)
        {
            ...
        }
    }
    

    相关文档在这里:

    https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1

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

    注意:我从未使用过 Blazor Web Assembly,只使用过服务器端 Blazor,因此不确定 WASM 的具体内容是什么,但我知道构造函数可以在任何 C# 类中使用。

    【讨论】:

    • 我使用了 OnInitializedAsync() 并且除了等待我会弄清楚的警告之外,它就像我想要的那样工作。谢谢!
    猜你喜欢
    • 2021-10-26
    • 2023-01-30
    • 2021-08-22
    • 2023-03-31
    • 2011-11-17
    • 2017-09-12
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多