在Blazor组件中显示条件内容的最佳方法是什么

时间:2020-04-02 15:27:23

标签: c# blazor blazor-server-side

我不是很多Web开发人员,但是我知道围绕.NET的方式。我决定尝试制作一个Web应用程序,但是我在如何处理呈现的内容方面有些挣扎。

示例是一个用于从系统中删除文件和文件夹的应用(请注意,您不应该从网络应用中删除文件和文件夹)

我有一个要加载为模式的组件。加载时提示您是否要删除该文件夹。您可以确认或取消。如果您确认它已完成删除文件夹的过程,并且内容更改为一条消息,提示“请稍等,请等待,完成”,然后消息更改为“嘿,完成了”。

这种情况导致我的组件看起来像

if(initialState)
{
    ask for confirmation
}
else if(RemovingState)
{
    please wait while this is completed
}
else if(CompletedState)
{
    Hey its finished
}

这导致我的方法在开始时会出现尴尬的标志

StartRemoveMethod()
{
    initialState = false;
    RemovingState = true;

    DoTheRemoval
}

使用它感觉很奇怪。我正在考虑添加其他检查,这意味着我必须引入一个新标志和另一个else if部分。我只是想知道我是否完全丢失了某些东西,或者这基本上就是我应该做什么的想法?

1 个答案:

答案 0 :(得分:2)

Blazor肯定有点思维转变,特别是如果您来自WinForms或类似的平台。当试图弄清楚如何将其分解为组件时,最终容易陷入分析瘫痪。对于您的特定示例,这似乎是一种完全合理的方法(尽管使用switch和enum方法会使其更加整洁)。

对于Blazor来说还处于初期,因此还没有很多真正详细的示例。 Blazor团队的Blazing Pizzas教程是一个非常不错的教程:https://github.com/dotnet-presentations/blazor-workshop/。这将引导您构建一个完整的系统,以及有关如何管理应用程序状态的一些非常有用的指导。

您可能还想看看一些介绍性的(Facebook)React文章,这些文章描述了构建组件和状态管理。与旧的WinForms范例相比,这些概念向Blazor的传递要好得多。值得一读有关Flux / Redux的概念,因为它们是解决基于组件的UI方法中出现的一些相当常见的状态问题的流行方法。