我有一个电子商务Blazor服务器项目,我想重新渲染推车组件将商品添加到购物车后产品组件。我尝试将 Cart 组件继承到 Product 组件,并运行 Cart 组件的公共方法来重新渲染其组件。
添加到购物车方法产品组件.
产品.剃须刀
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
}
推车剃须刀
[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();
}
该方法成功运行,但 UI 并未像我希望的那样重新呈现。
我虽然运行时 UI 会重新渲染OnInitialized()
方法和StateHasChanged()
?
Edit:我更新我的Reload()
方法并在末尾调用该方法AddToCart()
方法,但不起作用:(
推车剃须刀
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
Reload(); // this method is inherited from the Cart Component trying to re-render the Cart Component
//Does not work
StateHasChanged();
}