Tengo problemas con la configuración del estado. Cuando trato de establecer el estado de setDataTemp() desde axios, los datos enviados a setDataTemp están en blanco. sin embargo, si solo registro los datos directamente en la consola, obtengo una respuesta. No estoy seguro de qué está mal
setDataTemp no está vacío
const [dataTemp, setDataTemp] = useState([]); const _overlayFilder = async () => { let source = axios.CancelToken.source(); await axios .get(network + '/getOverlayList', { cancelToken: source.token, }) .then(response => { removeRootUUID(response.data.items, response.data.items); // console.log(response.data); return response.data; }) .then(response => { setDataTemp(response.items); }) .catch(function (e) { if (axios.isCancel(e)) { console.log(`request cancelled:${e.message}`); } else { console.log('another error happened:' + e.message); } }) .finally(() => { console.log(dataTemp) });Si no configuro el estado setDataTemp y solo consola.log en su lugar, imprimo los datos
const [dataTemp, setDataTemp] = useState([]); const _overlayFilder = async () => { let source = axios.CancelToken.source(); await axios .get(network + '/getOverlayList', { cancelToken: source.token, }) .then(response => { removeRootUUID(response.data.items, response.data.items); // console.log(response.data); return response.data; }) .then(response => { // the data that I want to set into setDataTemp console.log(response.items); }) .catch(function (e) { if (axios.isCancel(e)) { console.log(`request cancelled:${e.message}`); } else { console.log('another error happened:' + e.message); } })Está mezclando un manejo de función async utilizando un enfoque similar a Promise con su llamada axios .
Intenta cambiar tu código así:
const [dataTemp, setDataTemp] = useState([]); const _overlayFilder = async () => { try { let source = axios.CancelToken.source(); const { data } = await axios.get(network + '/getOverlayList', { cancelToken: source.token, }); removeRootUUID(data.items, data.items); setDataTemp(data.items); console.log(dataTemp); } catch (err) { if (axios.isCancel(err)) { console.log(`request cancelled:${e.message}`); } else { console.log('another error happened:' + e.message); } } };