Estoy escribiendo un axios get call useEffect que se llama cada vez que un usuario selecciona una opción de un menú desplegable. Funciona para obtener información la primera vez que selecciono cada opción, pero cada vez que vuelvo a una opción previamente seleccionada, realiza la limpieza, pero no pasa ni "obtiene" la información del punto final nuevamente, lo que lleva a " el objeto no está definido" al intentar pasar dentro de una pantalla de lista plana.
Para que quede claro, estoy usando 'selectDrowdown' para mi lista de opciones.
useEffect(() =>{ const CancelToken = axios.CancelToken; const source = CancelToken.source(); getGames(source); return () =>{ source.cancel(); }; }, [selectedOpt]); const getGames = (source) => { const opt = getOpt(); axios.get(`${URL}${opt}`, { cancelToken: source.token }) .then(function (response){ setSelectedResults(response.data.data); }) .catch((err) =>{ if(axios.isCancel(err)){ console.log('successfully aborted'); } else{ alert(error.message) console.log('getGameTest', error); } }); }; <View style={styles.nav}> <SelectDropdown buttonStyle={styles.dropdownButton} defaultButtonText={'---Select---'} data={"Games", "Publishers and Developers", "Reviews", "Platform"} onSelect={(selectedItem, index) => { console.log(selectedItem, index) setSelectedOpt(selectedItem) }} buttonTextAfterSelection={(selectedItem, index) => { return selectedItem }} rowTextForSelection={(item, index) => { return item }} /> </View>1: los tokens de cancelación están en desuso de axios, intente con otro enfoque verifique esto
2: use la sintaxis async/await para un código más limpio
3: debe pasar el event object a la devolución de llamada
onSelect={(e)=>{ //mapping and etc ... }}