@aleshaykovlev
html, css, js, node, webpack, sass, react

Почему не обновляется состояние?

Post state:
const [post, setPost] = React.useState({
		description: "",
		photos: []
	});


При нажатии на submit делаю два запроса: первый на загрузку фото в папку, второй на создание поста.

В первом запросе получаю имена файлов, которые загрузились в папку, затем обновляю состояние для поста:
fetch(`${REACT_APP_API_URL}/upload/photos`, {
				method: "POST",
				headers: {
					"Accept-Type": "application/json",
					Authorization: `Bearer ${Cookies.get("token") || ""}`,
				},
				body: formData
			})
				.then((response) => response.json())
				.then((data) => {
					const { fileNames } = data; // fileNames: ["photos-1661976218835.jpg", "photos-1661976218836.jpg"]

					setPost({ ...post, photos: fileNames });
				});


Второй запрос:
fetch(`${REACT_APP_API_URL}/posts/add`, {
				method: "POST",
				headers: {
					Authorization: `Bearer ${Cookies.get("token") || ""}`,
					"Content-Type": "application/json"
				},
				body: JSON.stringify(post) // {description: "...", photos: []}
			})
				.then((response) => response.json())
				.then((data) => {
					....
				});


Прикол в том, что fileNames приходит, а photos не обновляется, то есть на сервер приходит photos: [] (description и другие свойства обновляются)
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@notseq7
Попробуй useState использовать в таком виде:

setPost({...post, photos: [...post.photos, fileNames ]})
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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