Search code examples
reactjsaxiosreact-functional-componentpayload

How to make api call with optional payload in React JS


I am trying to call API in React JS with AXIOS. I need to send payload as optional when productID has value.

    This is my service.js file
    
fetchProducts: (payload) => put(`/products`, payload),
fetchProductsProductID: (params, payload) => put(`/products`, payload, { params }),

products.js

       useEffect(() => {
            if (productID) {
                CommonSrv.fetchProductsProductID(
                    { productID: productID },
                    {
                        data: data,
                    },
                )
                    .then((resp) => {
                       console.log(resp)
                    })
                    .catch((err) => {
                        console.log(err)                  
                      });
            } else {
                CommonSrv.fetchProducts({ data: data })
                .then((resp) => {
                    console.log(resp)
                 })
                 .catch((err) => {
                     console.log(err)                  
                   });
            }
        }, [])

within the then and catch blocks same conditions I need to use. Because of productID, I am duplicating my code a lot how can I simply this code.


Solution

  • You can try something like that!

    (productID ? 
       CommonSrv.fetchProductsProductID(
          { productID: productID },
          {
             data: data,
           },
        )
        : 
        CommonSrv.fetchProducts({ data: data }))
    ).then(.....).catch(...)