Vue 3 + Pinia 中的业务逻辑

paq*_*375 6 vue.js nuxt.js vuejs3 pinia

假设我有一个使用 Vue 3 的简单网上商店应用程序。每当用户将商品添加到购物车时,我都会将其存储在 Pinia 本地,并将此事件信息发送到后端。

默认情况下,我会向 Pinia 存储添加一个操作,例如addItemToCart()更新本地cartItems反应变量,并将请求发送到后端,例如POST http://localhost/api/update-cart.

我的想法是在我的应用程序中引入一个服务层。我会创建一个类似的服务:

const useCartService = () => {
  const cartStore = useCartStore()

  const updateCartApi = useUpdateCartApi()

  const addItemToCart = async (item) => {
    cartStore.loading = true

    await updateCartApi.mutate(item)

    cartStore.items.push(item)

    cartStore.loading = false
  }

  return {
    loading: cartStore.loading,
    
    addItemToCart,
  }
}
Run Code Online (Sandbox Code Playgroud)

像这样将业务逻辑与 Pinia 商店分开有意义吗?它是否被视为一种反模式,或者这种方法在 Vue 中常用?