Necesito obtener la extensión de una imagen de mi biblioteca y establecer este valor en una variable, porque necesito esta variable para hacer una API POST más adelante. Estoy usando la biblioteca Image Picker para seleccionar la imagen y también una función para saber cuál es la extensión de mi imagen. El problema es que cuando selecciono una imagen y configuro el valor en mi variable 'extensión', se configura de manera incorrecta y tardía. Después de seleccionar la imagen de nuevo, funciona. No sé si es un problema con async.
Adjunto el código de ambas funciones. ¡Gracias!
let extension = ''; const RENAPER_DNI_FRONT = ({ navigation }) => { const [image_base64, setImageBase64] = useState(''); const [image, setImage] = useState("https://via.placeholder.com/200x100") function base64FileHeaderMapper(fileBase64) { let fileHeader = new Map(); //get the first 3 char of base64 fileHeader.set("/9j", "JPG") fileHeader.set("iVB", "PNG") fileHeader.set("Qk0", "BMP") fileHeader.set("SUk", "TIFF") fileHeader.set("JVB", "PDF") fileHeader.set("UEs", "OFD") let res = "" fileHeader.forEach((v, k) => { if (k == fileBase64.substr(0, 3)) { res = v } }) //if file is not supported if (res == "") { res = "unknown file" } //return map value return res; } // //ImagePicker place holder const selectImage = async () => { const options = { title : 'Select an image', storageOptions: { skipBackup: true, path: 'images' }, includeBase64: true, } ImagePicker.launchImageLibrary(options, response =>{ if (response.errorCode) { console.log(response.errorMessage) } else if (response.didCancel) { console.log("the user cancel the selection") } else{ const uriLibrary = response.assets[0].uri setImage(uriLibrary) //Set image in base 64 setImageBase64(response.assets[0].base64) extension = base64FileHeaderMapper(image_base64); console.log('This is my extension ' + extension); } }) }