【问题标题】:Blazor - an alternate approach to sharing data between pagesBlazor - 在页面之间共享数据的另一种方法
【发布时间】: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 怎么办?它只是让我想起了使用全局变量传递参数。

标签: blazor blazor-client-side


【解决方案1】:

我会研究 Fluxor 以进行状态管理......它更强大,但有一点时间来正确使用。

https://betweentwobrackets.dev/posts/2020/06/state-management-with-blazor-using-fluxor-part-1/

【讨论】:

  • 谢谢。我们很早以前看过 Fluxor,但当时认为它还不够成熟,无法用于生产。看起来情况有所改善,我们将再看看。谢谢你的提示!但这并不能真正回答这个问题。对此有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2019-12-20
  • 2020-09-22
相关资源
最近更新 更多