我的项目中有一个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; }
}