Sumário
Este problema conhecido foi traduzido automaticamente do inglês.
O carrinho FastStore é criado/atualizado por meio de ValidateCartMutation.
Se ocorrer uma solicitação externa que atualize/complemente/enriqueça o carrinho, como POST /attachments/marketingData
, o carrinho perderá sua referência e não será possível adicionar outro produto na primeira tentativa. Chamadas externas que alteram o orderForm podem deixar o carrinho obsoleto, o que significa que os itens no carrinho foram alterados fora do fluxo padrão do cliente na loja e não têm mais o mesmo estado de carrinho que o cliente armazenou no navegador. Quando isso acontece, a primeira solicitação validateCartMutation é ignorada (por exemplo, o cliente adiciona outro produto) e, em seguida, a versão atual do orderForm é retornada, e esse novo produto não é adicionado ao carrinho.
Percebemos que esse comportamento ocorre tanto na versão 2 quanto na versão 3 do pacote @faststore/api
.
Simulação
Você pode validar esse comportamento fazendo as seguintes solicitações:
- Adicionar um produto ao carrinho por meio de
POST ValidateCartMutation
; - Adicionar dados de marketing por meio de
POST api/checkout/pub/orderForm/U050MGX0CQ3/attachments/marketingData
; - Adicionar outro produto ao carrinho por meio de
POST ValidateCartMutation
.
Quando você adicionar o segundo item ao carrinho, ele não será adicionado. Ele terá de ser adicionado novamente.
Workaround
Após cada solicitação que atualizar o carrinho (etapa 2 no exemplo acima), será necessário recuperar as informações atuais do carrinho e atualizá-las, conforme sugerido pela implementação abaixo:
await axios.post('/api/marketingdata', payload)// update cart storeconst updatedCart = cartStore.read()cartStore.set(updatedCart)
Isso garantirá que o carrinho esteja atualizado para que, quando o cliente adicionar mais produtos, o carrinho esteja com informações atualizadas.