@priority

Почему респонс из fetch становится undefined?

Здравствуйте.
Проблема заключается в том, что, когда я делаю fetch запрос с использованием хука useEffect, я вроде как в первом промизе получаю достоверную информацию, а в следующем промизе, когда я хочу сохранить эту инфу в переменную, она уже undefined.
Вот код:
const ChatList: React.FC = () => {
    const [error, setError] = useState(null);
    const [isLoaded, setLoaded] = useState(false);
    const [response, setState] = useState<ServiceResponseGeneric<UserDto>>();

    useEffect(() => {
        fetch(URL)
            .then(result => result.json() as Promise<ServiceResponseGeneric<UserDto>>)
            .then(
                (result) => {
                    setLoaded(true)
                    setState(result)
                    console.log(result) // здесь ничего уже не отображает, а если бы я поставил лог в начало, перед setLoaded, то все вывело бы. Как будто после setLoaded все куда то не туда идет
                },
                (error) => {
                    setLoaded(true)
                    setError(error)
                }
            )
    }, [])

    if (error) {
        return <div>Ошибка</div>
    } else if (!isLoaded) {
        return <div>Загрузка</div>
    } else {
        return <div className="chatList">
            <div className="messagesTitle">Последние сообщения</div>
            {
                Array.from(response?.Value!).map(item =>
                    <ChatListItem
                        chatId={item.Id}
                        chatName={item.Login}
                        messagePreview="Заглушка"
                        sentTime="21:14"/>)
            }
        </div>;
    }
}


На всякий случай вот использованные классы
ServiceResponseGeneric
export class ServiceResponseGeneric<T> extends ServiceResponse{
    Value: Array<T>
//он не наследует ничего такого важного, типа errorMessage: string и всякое такое
    
    constructor(val: Array<T>) {
        super();
        this.Value = val
    }
}


UserDto
export class UserDto {
    Id: string = ""
    Login: string = ""
}


В инете много ответов на этот вопрос, и они кажутся хорошими, но у меня не работает. Сервер возвращает все нормально.
Спасибо.
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы