Basicamente no VTEX IO temos… Umas 4 formas de fazer isso.
3 Delas podem ser feitas de forma nativa pela própria VTEX usando os pacotes disponibilizados por ela. A quarta maneira é usando hooks customizados para por exemplo resetar o orderForm e limpar o carrinho, mas esse não é o foco aqui.
tldr; Esse primeiro método já resolve o problema do seu post.
Rest API
A API usada será a de orderForm. /api/checkout/pub/orderForm/{id}/items/removeAll
E pode ser implementada dessa forma:
// * Common
import React from "react"
import axios from "axios"
// * VTEX
import { DEFAULT_ORDER_FORM } from "@vtex/order-manager"
import { OrderForm } from "vtex.order-manager"
function MinicartMethods() {
const { orderForm, setOrderForm } = OrderForm.useOrderForm()
const handleRemoveAllByREST = () => {
axios.post(`/api/checkout/pub/orderForm/${orderForm.id}/items/removeAll`)
const cleanOrderForm = DEFAULT_ORDER_FORM
cleanOrderForm.id = orderForm.id
cleanOrderForm.value = orderForm.value
setOrderForm(cleanOrderForm)
}
return (
<div>
<button onClick={handleRemoveAllByREST}>Remove All (REST)</button>
</div>
)
}
+ VTEX IO Like
Essas outras formas, mais elegantes e integradas resolvem o mesmo problema, porém de formas mais performáticas e integradas com a plataforma, vale dar uma olhada: