Como ouvir as alterações do orderForm

Olá,

fiz um componente que exibe o valor e a quantidade de itens do orderform, porem preciso atualizar toda vez que essas coisas mudarem, tentei usar o useOrderForm() mas ele não atualiza quando um produto é adicionado ao carrinho, ou quando muda a quantidade.

Tem alguma forma de eu ouvir essas mudanças para mudar o estado do meu componente ?

Olá @OIncognita!

Provavelmente o seu problema está sendo causado pelo fato de termos dois contextos de OrderForm disponíveis em algumas lojas. Pode ser que você esteja lendo de um contexto diferente do contexto que o carrinho de compras está lendo.

Se na loja em que você está trabalhando a flag de performance orderForm optimization está desativada, temos dois contextos de OrderForm sendo servidos na loja simultâneamente. Isso não é necessariamente um problema, mas você deve ter certeza de qual está sendo consumido pelo seu componente e pelo carrinho da loja.

Se a loja está usando o minicart.v2, e o add-to-cart-button, então o hook que você deve utilizar para ler o contexto do OrderForm é o useOrderForm da app vtex.order-manager. Essa combinação é importante: minicart.v2 + add-to-cart-button + useOrderForm.

2 Likes

O orderForm otimization está ativado

Eu estou usando esse contexto que esta recomendando, e mesmo assim ele não ouve as mudanças.

import { useOrderForm } from 'vtex.order-manager/OrderForm'

  const [ quantity, setQuantity ] = useState<number>(0)
  const { orderForm } = useOrderForm()
  const { handles } = useCssHandles(CSS_HANDLES)

  useEffect(() => {
    
    setQuantity(countCartItems(itemCountMode, orderForm.items)) 
  }, [orderForm])