state-management - Blazor webassembly,状态管理。刷新子组件
问题描述
我正在从列表中选择项目,并显示它们的不同内容。它可以正常使用此代码:
public class ItemState
{
public Item CurrentItem { get; set; }
public event Action OnItemSelected;
public void SetItemValue(Item item)
{
CurrentItem = item;
NotifyStateChanged();
}
private void NotifyStateChanged() => OnItemSelected?.Invoke();
}
protected override void OnInitialized()
{
ItemState.OnItemSelected += StateHasChanged;
}
在 Item 组件中,我正在使用其他组件并作为参数 Item 本身传递,例如:
<ItemHistory ItemModel="@Item"/>
但是 ItemHIstory 组件在选择不同的项目时不会刷新。始终显示第一个选定项目的历史记录。
问题出在哪里?
解决方案
答案是使用 StateContainer,因此所有组件都可以访问属性。 https://docs.microsoft.com/en-us/aspnet/core/blazor/state-management?view=aspnetcore-5.0&pivots=webassembly
推荐阅读
- c# - 如何动态覆盖动态对象的所有属性?
- python - 如何克服错误 429:Heroku 服务器上 Twitter API 的请求过多
- c++ - 带有 ROS 和自动完成的 VScode 设置
- python - 使用 pandas 制作列表数据框。每行将是原始列表中的一个列表,其标题与每个列表中的值键匹配
- dataset - 旧数据集图像到 excel 文件
- selenium - 使用 Selenium 切换到顶级框架
- java - Java中的内存类别“生成的代码”到底是什么?
- javascript - 未捕获的 ReferenceError:未定义 google - Google MAP API
- flutter - 如何在 Flutter 中逐行滚动段落?
- android - 蓝牙在尝试通过 BLE 做广告时不断崩溃