重新渲染访问同一列表的多个Blazor组件



我的项目中有一个AppState类,它可以跟踪列表。我还有一个组件向用户显示列表,还有另一个组件通过使用列表进行一些计算来显示一些其他数据。

当我添加到列表时,我希望视觉列表组件和计算组件都更新,但根据我从哪个组件添加项目,它要么只更新该组件,要么不更新(如果我从父组件添加(。

有没有一种方法可以告诉选定的组件必须重新渲染?当我实例化列表OnInitialized时,我设法使其工作,但当我进行更改时,它没有重新呈现。

我想的一些伪代码:

<ShoppingList @bind="appState.ShoppingList"/>
<Totals @bind="appState.ShoppingList"/>
@code {
appState.AddToList(new item{
amount = 1,
name = "beef"
});
}

我曾希望这能在列表更改时使组件更新,但遗憾的是,事实并非如此。

解决方案非常简单,接近我认为可能实现的:

在父组件中:

<ShoppingList ShoppingList="@appState.ShoppingList"/>
<Totals Total="@appState.Total"/>
@code {
appState.AddToList(new item{
amount = 1,
name = "beef"
});
}

然后在组件本身中添加一个参数:

@code {
[Parameter]
public List<AppState.Item> ShoppingList{ get; set; }
}

相关内容

  • 没有找到相关文章

最新更新