Soy un principiante en reactjs, tengo problemas para mostrar mensajes de error de la API, el mensaje de error se ve de esta manera
"[ErrorDetail(string=' name already exists!', code='invalid')]"Aquí solo necesito el valor de "cadena", así que estoy buscando una manera de extraerlo del mensaje de error anterior.
en reaccionar, usando
const errMsg = err?.response?.data?.error?.message this.setState(common.showSnackbar(true, errMsg || err.message || err, 'error'))dame si hay una solución para cambiar el mensaje de este
[ErrorDetail(string=' name already exists!', code='invalid')]a
'name already exists!'Puedes usar una expresión regular :
// this extracts the string and the code part const regex = /\[\w+\(\w+='(.*)',\s\w+='(.*)'\)\]/g; const parsed = regex.exec("[ErrorDetail(string=' name already exists!', code='invalid')]"); console.log(parsed[1]); // ' name already exists!' console.log(parsed[2]); // 'invalid'Esto supone que el formato de la cadena siempre es el que publicaste.
Sugeriría jugar con la expresión regular en https://regexr.com para cambiarla y que se ajuste a su problema.
Si tiene el control de la API de Django, puede solucionarlo antes de que llegue al navegador.
La instancia de ErrorDetail es un objeto similar a una cadena. Lo que está viendo es la representación del objeto del método __repr__() . Para obtener la cadena simple, solo necesita envolver la instancia en str() .
¡Entonces su data.error.message simplemente será un name already exists!