【发布时间】:2020-09-26 01:08:02
【问题描述】:
所以我目前正在查看 Blazor 示例项目。更具体地说,“计数器”,当我增加页面上的值,然后单击 web 应用程序上的不同选项卡时,假设“获取数据”选项卡,它拉起天气,然后我回去,增加的值又回到了 0.. 为什么会这样?为什么没有保存?
这是导航菜单
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
<ul class="nav flex-column">
<li class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</li>
<li class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="oi oi-plus" aria-hidden="true"></span> Counter
</NavLink>
</li>
<li class="nav-item px-3">
<NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
</NavLink>
</li>
</ul>
</div>
还有柜台
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
【问题讨论】:
-
对我来说似乎是合法的。它被定义为局部变量,因此假设在页面加载时发生任何类型的新实例创建,重置行为是“预期的”。有一些关于如何保存/保存数据的示例吗?
-
参见gist.github.com/SteveSandersonMS/…,它解释了如何存储和恢复状态。
-
我只是想它会保留数据。假设我正在更改按钮的背景,并且我希望在浏览不同选项卡时保存它。不会在那个时候改回默认值吗?就像 int 一样?
-
我认为这也是 SPA 理念的一部分
-
SPA 并不意味着视图是单例的。如果创建了新实例,则会创建一个新实例。任何旧的实例状态都被丢弃(也许视图可以创建为单例耸耸肩)。