Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
execute query until push items to array - React Query?

I'm trying to execute a query when an array gets to be updated, but the query executes immediately!

So I have checkedProducts array I push some data into it when the screen mount, so my goal is to execute the query when this array has data.

here's the hook

import {useQuery} from 'react-query';
import {checkAvailableProducts} from '../Api';

export type checkProductItem = {
  product_id: number;
  detail_id: number;
};
export interface checkProducts {
  products: checkProductItem[];
}

export const useCheckAvailableProducts = (products?: checkProducts) => {
  console.log('products-RQ', products);
  return useQuery(
    ['checkAvailableProducts'],
    () => checkAvailableProducts(products),
    {
      enabled: !!products?.products, // OR products?.products.length > 0 not works
    },
  );
};

component

....
  const [checkedProducts, setCheckedProducts] = useState<checkProducts>();
  const {data: unavailableProducts, refetch} = useCheckAvailableProducts(
    checkedProducts,
  );


  React.useEffect(() => {
    if (cartProducts.length) {
      let productsIDs = cartProducts.map(prod => {
        return {
          product_id: prod.id,
          detail_id: prod.detail_id,
        };
      });
      Promise.all(productsIDs).then(allProductsIDs => {
        console.log('allProductsIDs', allProductsIDs);
        return setCheckedProducts({
          products: allProductsIDs,
        });
      });
    }
  }, [cartProducts]);

  React.useEffect(() => {
    const unsubscribe = navigation.addListener('focus', () => {
      refetch();
      console.log('unavailableProducts:', unavailableProducts);
      if (unavailableProducts && unavailableProducts.length > 0) {
        console.log('hey if0update!!!');
        updateCart(unavailableProducts);
      }
    });
    // Return the function to unsubscribe from the event so it gets removed on unmount
    return unsubscribe;
  }, [navigation, refetch, unavailableProducts, updateCart]);
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda