我有一个显示单个帖子的页面,我有一个喜欢按钮。如果帖子被点赞,当用户单击按钮时,它会将其状态更改为“不喜欢”按钮,但如果帖子不被点赞,则会注册“赞”并将 id 推送到数组中,但按钮状态没有更新,我必须重新加载页面才能看到该页面。有人可以告诉我如何解决这个问题吗?
这是代码:
const [liked, setLiked] = useState(false)
const [data, setData] = useState([]);
function likePosts(post, user) {
post.likes.push({ id: user });
setData(post);
axiosInstance.post('api/posts/' + post.slug + '/like/');
window.location.reload()
}
function unlikePosts(post, user) {
console.log('unliked the post');
data.likes = data.likes.filter(x => x.id !== user);
setData(data);
return (
axiosInstance.delete('api/posts/' + post.slug + '/like/')
)
}
对于按钮:
{data.likes && data.likes.find(x => x.id === user) ?
(<FavoriteRoundedIcon style={{ color: "red" }}
onClick={() => {
unlikePosts(data, user)
setLiked(() => liked === false)
}
}
/>)
: (<FavoriteBorderRoundedIcon
onClick={() => {
likePosts(data, user)
setLiked(() => liked === true)
}
}
/>)
}
谢谢,请询问是否需要更多详细信息。
慕桂英4014372
相关分类