Blazor:仅在可见时呈现内容

Blazor: render content only when visible

我有一个 blazor 页面,其中包含来自 Syncfusion 的以下(简化)组件,单击按钮时显示模态表单:

<SfDialog IsModal="true" @bind-Visible="@IsFormVisible">
    <DialogTemplates>
        <Header>My Form</Header>
        <Content>
           <!-- complex and heavy content here -->
        </Content>
    </DialogTemplates>
</SfDialog>

<button @onclick="ShowDialog">Open Dialog</button>

@code {

    private void ShowDialog()
    {
         // How can I render form content here?
         @IsFormVisible = true;
    }

}

此表单包含复杂的内容,需要一些时间才能呈现。 大多数时候不需要此表单,因此不需要呈现其内容。

如何只在打开表单时渲染表单内容?

我读过有关虚拟化的内容,但它似乎只与大型集合(lists/grids 有数百个项目)有关,与部分代码无关。

我正在寻找未绑定到 Syncfusion 组件的通用 blazor 模式,但如果不存在,一个 Syncfusion 对话框特定解决方案就足够了。

谢谢!

这是如何工作的?

<Content>
    @if(IsFormVisible)
    {        
       <!-- complex and heavy content here -->        
    }
</Content>

我们已经验证了您报告的查询,我们可以在需要时使用条件呈现来呈现对话框内容。

我们创建了一个示例供您参考。在此示例中,我们使用条件渲染来渲染内容并检查 Visible 属性 值以检查对话框是否打开。

因此对话框内容仅在对话框打开时呈现。

代码片段:

    <SfDialog @ref="@DialogObj" Width="50%" ShowCloseIcon="true" IsModal="true" @bind-Visible="@IsVisible">
    <DialogTemplates>
        <Content>
            @if (IsVisible)
            {
                <SfButton>Click</SfButton>
            }
        </Content>
    </DialogTemplates>
</SfDialog>
@code {

    SfDialog DialogObj;
    private bool IsVisible { get; set; } = false;

    private void OpenDialog()
    {
        this.IsVisible = true;
    }

    private void CloseDialog()
    {
        this.IsVisible = false;
    }
}

样本:https://www.syncfusion.com/downloads/support/directtrac/338757/ze/Dialog_App-1140947262