【问题标题】:如何将 Blazor 组件实例保存在变量中并将其呈现在我的 .cshtml 中
【发布时间】:2022-01-23 04:07:05
【问题描述】:

考虑到我有一个名为Tab 的类。

public class Tab
{
    public Guid Id { get; }
    public bool IsVisible { get; set; }

    protected Tab()
    {
        Id = Guid.NewGuid();
    }
}

我想将这些选项卡严格耦合到 Blazor 组件实例,并通过迭代选项卡来呈现这些实例。我想控制何时创建组件以及何时再次销毁它。

我想这样做是因为这样我可以保持每个组件的状态。

这是简单方法的问题。考虑这样的事情:

@code {
    public void CreateNewTabAndRemoveOldTab()
    {
        Tabs.RemoveAt(0);
        Tabs.Add(new Tab());
    }
}

foreach (var tab in Tabs)
{
    <MyTabComponent/>
}

新创建的标签将简单地接管已删除标签的状态。 OnInitialized 不会被调用。

我查看了RenderFragment,但它看起来不像它的工作属性。问题是 Blazor 框架仍将决定何时创建新组件(因此调用 OnInitialized)或何时使用现有实例。

【问题讨论】:

    标签: c# .net blazor


    【解决方案1】:

    如果我没看错的话,Tab 是一个类,而不是一个组件。您需要将选项卡列表与呈现它们的组件分离。您的选项卡列表位于服务中,范围取决于您使用它们做什么。您的选项卡组件在列表中显示当前选定的选项卡。如果您再多展示一点逻辑,我可能会向您展示一个相关的工作示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多