Идея состоит в том, что я выбираю изображение, которое затем загружается в mongodb, и одновременно с нажатием кнопки загрузки я хочу запустить повторную визуализацию страницы, чтобы аватар обновлялся с новейшим изображением. Чтобы выполнить sh, я сначала отправляю запрос PUT на сервер, а сразу после этого я устанавливаю объект локального хранилища со значениями ответа.
Функции, которые захватывают и загружают изображение
const [reload, setReload] = React.useState(false);
React.useEffect(() => {}, [reload])
const fileSelectedHandler = evt => setAvatarImage(evt.target.files[0]);
const uploadProfileImage = async evt => {
evt.preventDefault();
const formData = new FormData();
formData.append('image', avatarImage);
try {
const response = await axios({
method: 'PUT',
url: `${keys.SERVER_URL}/user/avatar/${isAuthenticated()._id}`,
data: formData,
headers: { 'Content-Type': 'multipart/form-data',}
});
localStorage.setItem(localStorageName, JSON.stringify({ avatar: response.data.user.avatar }));
} catch (error) {
console.log(error);
}
setReload(prevState => !prevState);
}
Дело в том, что изображение загружается и отображается корректно. Проблема в том, что после того, как я нажимаю кнопку загрузки, изображение не отображается мгновенно, но мне приходится вручную перезагружать страницу. Вот почему я добавил этот setReload. Таким образом, когда я нажимаю кнопку загрузки, значение переменной reload изменяется, что вызывает перезагрузку в useEffect.