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

3
我虽不是专业的网站开发人员,但我熟悉.NET。我决定尝试制作一个Web应用程序,但我在如何处理渲染内容方面遇到了一些困难。
例如,这是一个从系统中删除文件和文件夹的应用程序(请忽略不应从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部分。我只是想知道我是否完全错过了什么,或者这基本上就是我应该做的事情的想法?


除了 if else,你认为还有什么更好的选择? - Vencovsky
1
说实话,我只是在想是否有更好的方法。或者说,也许有不同的思考方式。我想无论如何,我都需要一个决定显示内容的东西。我猜可能我更纠结于什么时候应该将某些东西作为自己的组件。如果我将每个部分作为子组件,那么就可以使事情变得更加清晰。 - Tyler Foraie
使用 enum RemovalState { Initial, Removal, Completed },然后在状态上进行 switch。 - peter_g
1个回答

2

Blazor对于那些从WinForms或类似技术转换而来的人来说,确实需要一些思维上的转变。当你试图将东西切分成组件时,很容易陷入分析瘫痪状态。关于你具体的例子,这似乎是一个完全合理的方法(虽然使用switch和enum会使它更加整洁)。

目前Blazor还处于早期阶段,因此还没有太多详细的示例。其中一个非常好的示例是Blazor团队的Blazing Pizzas教程:https://github.com/dotnet-presentations/blazor-workshop/。该教程将带领您构建一个完整的系统,并提供一些非常有用的指导,以管理应用程序状态。

您可能还想查看一些介绍性(Facebook)React文章,这些文章描述了如何构建组件和状态管理。这些概念在Blazor中的转移要比旧的WinForms范例更好。此外,阅读一些Flux/Redux的概念也很值得,因为它们是解决基于组件的UI方法中出现的一些常见状态问题的流行方式。


浏览了那个工作坊存储库中的一些代码,我确实感觉自己在正确的轨道上。我已经到了知道有问题但不确定是什么的地步。感谢您指引我走向正确的方向! - Tyler Foraie
@TylerForaie 是的,在一开始,只要得到一些指针,确保你朝着正确的方向前进,这将使所有的区别!这是一个很棒的技术! - tomRedox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接