Soy nuevo en reaccionar y estoy tratando de hacer algo simple.
Recibo datos JSON de BE que se ven así:
{"data":[{"id":"12345", "name":"Blabla", "otherName":"3300", "completeDate":"2021-10-01T05:00:00.000+0000", "status":"Active", "location":"572957393.pdf"}]} Ahora, la ubicación es el lugar donde se almacena el archivo en el servidor y necesito concatenar data.location con URL, de modo que cuando lo represente, en lugar de esto, "572957393.pdf" veré esto "https://www.mypage.com/files/https572957393.pdf"
Creo que la mejor manera es usar el método .map en el método de búsqueda de clase, pero no puedo hacer que funcione
La declaración de búsqueda:
fetchData(params, id){ axios({ url:`/admin/${this.state.radioSelect}/detail`, method:'get', params }).then(resp => { //const updated = resp.data.map(location) => This is where I am trying to use .map method .then(resp => { if(resp.data.code == '200'){ this.setState({ pageSize:this.state.pagination.pageSize, records:resp.data.data, recordsTableSpin:false, recordsId:id, }) } }) }¿Puedes por favor ayudarme a resolver esto? Gracias.
Si he entendido bien tu pregunta, creo que podrías hacer lo siguiente:
fetchData(params, id){ axios({ url:`/admin/${this.state.radioSelect}/detail`, method:'get', params }).then(resp => { if(resp.data.code == '200'){ const updatedData = resp.data.data.map(element => ({ ...element, location: element.location + resp.data.location })) this.setState({ pageSize: this.state.pagination.pageSize, records: updatedData, recordsTableSpin: false, recordsId: id }) } }) }concatene la URL donde desea mostrar el archivo en el navegador. puede usar dos estados diferentes (uno para nombre de archivo y otro para URL) para que pueda concatenarlos como si usara una plantilla literal
${URL}${fileName}
o
URL + fineNamePrueba esto para usar MAP
const temp = data.map((ele) => { return { ...ele, file: url+fileName }; });