【发布时间】:2020-12-03 06:24:56
【问题描述】:
我们有一个重要的 blazor wasm 应用程序原型,并且即将对其进行重构以用于生产。在页面之间共享对象有很多复杂性。我们正在考虑放弃内置路由,转而采用一种方法,其中每个“页面”只是一个组件,并根据某些状态变量有选择地呈现。请参阅下面的代码片段,其中 C1 和 C2 是组件。这是个坏主意吗?
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@switch (currentCount)
{
case 1:
{
<C1></C1>
break;
}
case 2:
{
<C2></C2>
break;
}
//more "page cases" go here
default:
{
<p> No component</p>
break;
}
}
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
【问题讨论】:
-
我认为最好的方法是使用服务来存储数据,检查,例如wellsb.com/csharp/aspnet/…
-
感谢埃利塞奥。我们的原型已经有一个精心设计的“AppState”单例。在页面之间传达复杂对象似乎是一种脆弱的方式。例如Page1 设置了 Page 2 需要的一组 AppState 值,然后导航到 Page 2。如果其他一些事件处理程序意外更改 AppState 怎么办?它只是让我想起了使用全局变量传递参数。