Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!