@Denoro55

Почему не всегда обновляется картинка в React?

Я с помощью axios отправляю файл картинки на сервер
export const uploadPhoto = ({file}) => {
    const formData = new FormData();
    formData.append('file',file);
    const config = {
        headers: {
            'content-type': 'multipart/form-data'
        }
    }
    return (dispatch) => {
        return axios.post(`${apiUrl}/uploadavatar`,formData,config)
        .then(response => {
          setTimeout(function(){
            dispatch({type: 'USER_INFO', info: response.data})
          },300)
          
        })
        .catch(error => {
            console.log(response)
            throw(error);
        });
    };
};

Сделал небольшой таймаут до dispatch ( вероятность того, что загруженная фотка отобразится сразу на странице возрастает )
Вот на сервере записываю изображение
fs.mkdirs(currpath,function(err){

            let form = new formidable.IncomingForm();
            form.uploadDir = path.join(process.cwd(),currpath);

            form.parse(req);

            form.on('fileBegin', function (name, file){
                console.log('begin')
                file.path = path.join(dir,namedir,file.name);
            });

            form.on('progress', function(bytesReceived, bytesExpected) {
                var percent_complete = (bytesReceived / bytesExpected) * 100;
                // console.log(percent_complete.toFixed(2));
            });

            form.on('file', function (name, file){

                console.log('Uploaded ' + file.name);

                res.send('success');

            });
})

Далее получаю ответ > timeout > dispatch > новый render страницы с изображением
Проблема в том что иногда картинку не находит (404 not found). Хотя если нажать в консоли и открыть ее она есть. Как можно корректно исправить ? Я еще записываю пути картинок в базу данных Mongoose и если обновить страницу то картинка в любом случае появится но хотелось бы что бы 100% без перезагрузки отображалась после отправки формы
  • Вопрос задан
  • 293 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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