我有一个电子商务的Blazor Server项目,我想在从产品组件添加商品到购物车后重新渲染购物车组件。我尝试继承购物车组件到产品组件,并运行购物车组件的公共方法来重新渲染它的组件。
产品组件中的添加到购物车方法。
方法成功运行,但界面没有按照我想要的方式重新渲染。
我以为当我运行OnInitialized()方法和StateHasChanged()方法时,界面会重新渲染?
编辑:我更新了Reload()方法,并在AddToCart()方法的末尾调用它,但它不起作用 :(
产品组件中的添加到购物车方法。
Product.Razor
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
}
Cart.Razor
[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();
}
方法成功运行,但界面没有按照我想要的方式重新渲染。
我以为当我运行OnInitialized()方法和StateHasChanged()方法时,界面会重新渲染?
编辑:我更新了Reload()方法,并在AddToCart()方法的末尾调用它,但它不起作用 :(
Cart.Razor
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();
}
Product.Razor
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();
}