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])