necesito llamar a una API dependiendo del valor que estoy recibiendo en el estado,
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> const [selectedValue, setSelectedValue] = useState([]) const firstAPI = async (val) => { return await axios .get(`http://localhost:3000/api/v1/rendition?name=${val}&&excel=true`) .then(res => console.log('excel', res)) } const secondAPI = async (val) => { const limit = pageSize * (page - 1); return await axios .get(`http://localhost:3000/api/v1/rendition?id=${val}&&skip=${limit}&&take=${pageSize}&&excel=true`) .then((res) => { console.log('excelID', res); }) } const handleExcelClick = (param) => { if(param.filter(item => typeof item === 'string')){ firstAPI(param) } else { secondAPI(param) } } <Button onClick={() => handleExcelClick(selectedValue)} > Excel </Button>estoy recibiendo un valor de 2 entradas diferentes, que se almacenan en el estado de valor seleccionado, que puede ser una cadena o un número, por lo que necesito llamar a una API según el valor, si es una cadena, llamar a la primera API, si es un número, llame a la segunda API. Pero cualquiera que sea la condición que coloque, ignora la declaración if y solo llama a la primera API, lo que también desencadena un error 500 porque una de las API solo toma números como parámetros, no sé otra forma de abordar esto, cualquier ayuda será muy apreciado
Prueba con:
... if(param.filter(item => isNaN(item) )){ firstAPI(param) } else { secondAPI(param) } ...Así que lo resolví hace muchos días, pero olvidé publicar mi solución, así que aquí va:
const handleExcelClick = (param: any) => { if (typeof param === 'number') { return firstAPI(param); } else if (param.some((i: any) => typeof i === 'string')) { return secondAPI(param); }};
básicamente olvidé agregar un retorno a cada declaración, y tampoco tenía sentido filtrar valores basados solo en un método de filtro, así que usé el método de matriz "algunos" para recibir los valores que devuelven verdadero si se cumple la condición, que está comprobando si el tipo de datos coincide con la declaración
espero que esto ayude a cualquiera que intente hacer lo mismo