useState не обновляет состояние после вызова fetch

сервер получает данные и это видно в логах.

Так же данные видны в fetch запросе, а точнее во втором then где находятся console.log(jsоn).

В useEffect не происходит обновление данных console.log() выводит лишь undefined, хотя в setData передаются данные полученные с сервера.

export function useFetch <T, U = any>(method: string = 'POST'): IUseFetch<T, U>{

    const [load, setLoad] = useState(true)
    const [data, setData] = useState<T>()
    const [error, setError] = useState<ErrorData>()

    const ReqestData: RequestInit = {
        method,
        mode: 'cors',
        redirect: 'follow',
        credentials: "include",
        headers: {
            'Content-type': 'application/json',
            'Accept': 'application/json'
        },
    }

    useEffect(() => {console.log(data)},[data, load, error])

    const fetchData = (url: string, dataR?: U) => {

        if(dataR)ReqestData.body = JSON.stringify(dataR)
        fetch(process.env.REACT_APP_Server_Response + url, ReqestData)
        .then(response => response.json())
        .then((json) => {
            console.log(json)
            setData(json)
            setLoad(false)
        })
        .catch(err => {
            setError(err.message)
            setLoad(false)
        })

    }
    
    return {load, data, error, fetchData}
}

Ответы (1 шт):

Автор решения: Михаил Л

добавьте вызов fetch в useEffect, сейчас там только console.log

→ Ссылка