У меня есть следующая функция, чтобы проверить, существует ли изображение (аватар) на сервере. Если это так, аватар отображается. Если нет, отображается аватар по умолчанию.
export const Avatar = props => {
const userId = props.userId
const size = props.size ? props.size : 25
fetch(URL.Avatar + '/' + userId + '_avatar.jpg').then(res => {
if (res.status === 404) {
return (
<Image source={{uri: URL.Avatar + '/default.jpg' }} style={{
width: size,
height: size,
borderRadius: size / 2
}} />
)
} else {
return (
<Image source={{uri: URL.Avatar + '/' + userId + '_avatar.jpg' }} style={{
width: size,
height: size,
borderRadius: size / 2
}} />
)
}
}).catch(err => {
return (
<Image source={{uri: URL.Avatar + '/default.jpg' }} style={{
width: size,
height: size,
borderRadius: size / 2
}} />
)
})
}
Однако эта функция не работает. Я получаю ошибку «ничего не было возвращено из рендера», потому что функция считает, что оператор возврата (в конце) отсутствует. Однако, когда я добавляю в него несколько console.logs, сама загрузка работает. URL-адреса правильные, потому что, когда я помещаю возврат в конце с компонентом Image, он работает.
Кто-нибудь знает, в чем может быть проблема? Это как-то связано с asyn c?