Я попытался обновить сообщение, отправив форму редактирования, и на handleSubmit
я отправил создателю действия updatePost
, но, оказывается, он даже не go создателю действия. Прямо идет к контроллеру. Мне интересно, почему это происходит, и мне даже нужно здесь действие updatePost
? Кроме того, он не перенаправляет после отправки формы на маршрут /profile/:username/posts
.
Вот код ниже.
handleSubmit = () => {
const id = this.props.match.params.id
const username = this.props.auth.user.username
const postData = {
title: this.state.title,
description: this.state.description,
}
this.props.dispatch(updatePost(id, postData), () => {
this.props.history.push(`/profile/${username}/posts`)
})
}
---
export const updatePost = (id, postData, redirect) => {
return async (dispatch) => {
dispatch({ type: "UPDATING_POST_START" })
try {
const res = await axios.put(
`http://localhost:3000/api/v1/posts/${id}/edit`,
postData
)
dispatch({
type: "UPDATING_POST_START",
data: res.data,
})
redirect()
} catch (error) {
dispatch({
type: "UPDATING_POST_FAILURE",
data: { error: "Something went wrong" },
})
}
}
}
---
editPost: async (req, res, next) => {
try {
const postData = {
title: req.body.title,
description: req.body.description,
}
const post = await Post.findByIdAndUpdate(req.params.id, postData, {
new: true,
})
if (!post) {
return res.status(404).json({ message: "No post found " })
}
return res.status(200).json({ post })
} catch (error) {
return next(error)
}
}