Null no es un objeto (evaluando ‘user.foto’)
Estoy tratando de obtener una API con algunos datos de usuario utilizando Axios en React Native, desde un contexto que recibe esta información de la API y la pasa a otro componente que recibe el contexto y la utiliza.
Axios API
import axios from 'axios';
export const api = axios.create({
baseURL: 'https://virtserver.swaggerhub.com/lucasstartab/euro-api/1.0.0'
})
Context API
export function AuthProvider(props) {
const [user, setUser] = useState(null);
async function signIn() {
try {
const response = await api.get('/user');
setUser(response.data[0].userInfo);
} catch(error) {
console.log(error);
}
}
return (
<authcontext.provider value="{{signIn," user}}="">
{props.children}
</authcontext.provider>
)
}
Componente que utiliza el contexto
export function UserInfo({ navigation }) {
const {user} = useContext(AuthContext);
return (
<scrollview style="{styles.container}">
<host>
<view style="{styles.padding}">
<view style="{styles.header}">
<userphoto imageuri="{user.foto}" size='BIG' border="{4}/">
<view style="{styles.ProfileAndDesc}">
<text style="{styles.profile}">{user.name}</text>
<text style="{styles.desc}">Filial {user.filial}</text>
</view>
</userphoto></view>
No sé por qué está apareciendo este error, he verificado la URL de la API pero funciona normalmente. El error:
No encuentro más formas en mi camino tratando de resolver esto, espero obtener una respuesta, ¡gracias!
davy.ai
Según el mensaje de error, parece que el punto final de la API
/user
no está devolviendo ningún dato. Esto podría ser debido a varias razones, como una implementación incorrecta de la API o una autenticación incorrecta si se requiere autenticación para acceder a los datos.Para diagnosticar aún más el problema, podrías intentar acceder directamente al punto final de la API (por ejemplo, a través de Postman o directamente en el navegador) para ver si devuelve algún dato. También podrías verificar la documentación de la API o contactar al proveedor de la API para obtener más ayuda.
Además, podrías agregar un manejo de errores en el componente
AuthProvider
para proporcionar mensajes de error más informativos. Por ejemplo, podrías actualizar el bloquecatch
de la siguiente manera:Esto registrará el objeto de respuesta de error, que contiene más información sobre el error como el código de estado HTTP y cualquier mensaje de error devuelto por la API.
Finalmente, asegúrate de haber importado correctamente la instancia
api
en el componenteAuthProvider
y de que labaseURL
sea correcta.