【发布时间】:2018-07-29 06:05:39
【问题描述】:
尝试在点击事件时使数字增加 1, 想知道什么是正确的方法吗?
在我的渲染()中:
{this.state.posts.map((post, i) =>
<div key={post._id}>
<span>Votes: {post.votes}</span>
<a href="" onClick={() => this.votePost(post._id, i)}>
Click Me
</a>
</div>
)}
初始状态:
state = {
posts: [],
};
点击功能:
votePost = async id => {
await axios.put(`/posts/${id}`);
this.setState({
})
};
后端:
router.put('posts/:post_id', async (req, res, next) => {
try {
const { post_id } = req.params;
const { votes } = req.body;
const doc = await Post.findByIdAndUpdate(post_id, { votes });
res.status(200).send(doc);
} catch (e) {
next(e);
}
});
【问题讨论】:
-
您从哪里获得 newPostData 表单?如果您是从服务器获取它,那很好,但您只需要更新该特定帖子,无需重置整个帖子。
-
您可以做的另一件事是您可以先在客户端设置递增投票然后进行服务器调用,但是您需要检查服务器是否有错误然后您需要减少它在客户端再次增加 1。
标签: node.js mongodb reactjs express