如何使用LocalStorage更新Blazor Server购物车中的项目数量?
我在Blazor Server Project中有一个购物车,每次将产品添加到购物车中时,我都想更新购物车数。我正在使用LocalStorage存储产品。当我尝试更新购物车中的项目数量时,我会遇到一个错误:
System.InvalidOperationException: 'IJSInProcessRuntime not available'
在导航栏中更新购物车:
<div class="top-row px-4">
<a href="cart" >
<span>
<i class="bi bi-cart"></i> @GetCartItemsCount()
</span>
</a>
</div>
@code {
[Inject] public ISyncLocalStorageService LocalStorage { get; set; }
[Inject] public ICartService CartService { get; set; }
protected override void OnInitialized()
{
CartService.OnChange += StateHasChanged;
}
private int GetCartItemsCount()
{
var cart = LocalStorage.GetItem<List<ShoppingCart>>(SD.ShoppingCart);
return cart == null ? 0 : cart.Count;
}
public void Dispose()
{
CartService.OnChange -= StateHasChanged;
}
}
在Cartservice中,我更新LocalStorage:
public class CartService : ICartService
{
private readonly ILocalStorageService localStorage;
public event Action OnChange;
public CartService(ILocalStorageService localStorage)
{
this.localStorage = localStorage;
}
public async Task DecrementCart(ShoppingCart cartToDecrement)
{
var cart = await localStorage.GetItemAsync<List<ShoppingCart>>(SD.ShoppingCart);
for (int i = 0; i < cart.Count; i++)
{
if (cart[i].ProductId == cartToDecrement.ProductId && cart[i].ProductVariantId == cartToDecrement.ProductVariantId)
{
if (cart[i].Count == 1 || cart[i].Count == 0)
{
cart.Remove(cart[i]);
}
else
{
cart[i].Count -= cartToDecrement.Count;
}
}
}
await localStorage.SetItemAsync(SD.ShoppingCart, cart);
OnChange.Invoke();
}
如何更新购物车中的产品数量? 先感谢您。
I have a shopping cart in Blazor Server project and I'm want to update the shoppingcart count everytime a product is added to the cart. I'm using localStorage to store the product. when I try to update the number of items in the cart I get an error:
System.InvalidOperationException: 'IJSInProcessRuntime not available'
Updating shopping cart in the Navigation bar:
<div class="top-row px-4">
<a href="cart" >
<span>
<i class="bi bi-cart"></i> @GetCartItemsCount()
</span>
</a>
</div>
@code {
[Inject] public ISyncLocalStorageService LocalStorage { get; set; }
[Inject] public ICartService CartService { get; set; }
protected override void OnInitialized()
{
CartService.OnChange += StateHasChanged;
}
private int GetCartItemsCount()
{
var cart = LocalStorage.GetItem<List<ShoppingCart>>(SD.ShoppingCart);
return cart == null ? 0 : cart.Count;
}
public void Dispose()
{
CartService.OnChange -= StateHasChanged;
}
}
In CartService I update the localstorage:
public class CartService : ICartService
{
private readonly ILocalStorageService localStorage;
public event Action OnChange;
public CartService(ILocalStorageService localStorage)
{
this.localStorage = localStorage;
}
public async Task DecrementCart(ShoppingCart cartToDecrement)
{
var cart = await localStorage.GetItemAsync<List<ShoppingCart>>(SD.ShoppingCart);
for (int i = 0; i < cart.Count; i++)
{
if (cart[i].ProductId == cartToDecrement.ProductId && cart[i].ProductVariantId == cartToDecrement.ProductVariantId)
{
if (cart[i].Count == 1 || cart[i].Count == 0)
{
cart.Remove(cart[i]);
}
else
{
cart[i].Count -= cartToDecrement.Count;
}
}
}
await localStorage.SetItemAsync(SD.ShoppingCart, cart);
OnChange.Invoke();
}
How can I update the numer of products in the shoppingcart?
Thank you in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论