如何从Blazor中的另一个组件重新渲染组件?
我有一个电子商务Blazor服务器项目,我想在从产品组件向购物车添加一个项目后重新呈现购物车组件。我尝试将购物车组件继承到产品组件,并运行购物车组件的公共方法来重新呈现其组件 产品组件中的“添加到购物车”方法 产品.剃须刀如何从Blazor中的另一个组件重新渲染组件?,blazor,blazor-server-side,asp.net-blazor,Blazor,Blazor Server Side,Asp.net Blazor,我有一个电子商务Blazor服务器项目,我想在从产品组件向购物车添加一个项目后重新呈现购物车组件。我尝试将购物车组件继承到产品组件,并运行购物车组件的公共方法来重新呈现其组件 产品组件中的“添加到购物车”方法 产品.剃须刀 public async Task AddToCart() { //The adding logic in this area StateHasChanged(); Reload(); // this method is inherited fro
public async Task AddToCart()
{
//The adding logic in this area
StateHasChanged();
Reload(); // this method is inherited from the Cart Component trying to re-render the Cart Component
//Does not work
}
public async Task AddToCart()
{
//The adding logic in this area
Reload(); // this method is inherited from the Cart Component trying to re-render the Cart Component
//Does not work
StateHasChanged();
}
手推车,剃刀
[Parameter]
public List<Models.Cart> CartItem { get; set; }
protected override void OnInitialized()
{
CartItem = _context.Cart.Where(i => i.CustomUserId == _userManager.GetUserId(_httpContextAccessor.HttpContext.User) && !i.IsSold).ToList();
}
public void Reload()
{
OnInitialized();
StateHasChanged();
}
protected override void OnParametersSet()
{
CartItem = _context.Cart.Where(i => i.CustomUserId == _userManager.GetUserId(_httpContextAccessor.HttpContext.User) && !i.IsSold).ToList();
}
public void Reload()
{
OnParametersSet(); //updated but still not working
StateHasChanged();
}
产品.剃须刀
public async Task AddToCart()
{
//The adding logic in this area
StateHasChanged();
Reload(); // this method is inherited from the Cart Component trying to re-render the Cart Component
//Does not work
}
public async Task AddToCart()
{
//The adding logic in this area
Reload(); // this method is inherited from the Cart Component trying to re-render the Cart Component
//Does not work
StateHasChanged();
}
从购物车继承并不意味着您正在查看与项目中的“其他”购物车相同的实例。您继承的是购物车的类(定义),而不是正在运行的组件 有两种方法可以解决此问题: 使用公共父组件
您提供的代码没有为我提供足够的有关如何呈现这些组件的信息。他们在同一页上吗?您的购物车控制在主布局上吗?你把一个变成另一个的孩子了吗?