我正在使用后端的NodeJS和前端的React + Redux处理CRUD应用。这是一切如何在其中运作的快速模式:
添加项
POST
路由并通过正文发送标题BACKEND DONE,新帖子在服务器中
我在第2步中的调度函数中添加了.then()
,其中我使用type: 'ADD_POST'
和post: post
发送了一个操作(我从NodeJS发布了帖子res.json({post: result from database})
)
在我的reducer中,我设置了CASE 'ADD_POST': return action.post
FRONTEND DONE,相同的帖子现在可供用户看到而无需刷新
我想使用相同的逻辑来更新特定帖子的赞。这是我到目前为止所做的:
PUT
路径BACKEND DONE,现在发布了1个更像服务器
我再次将.then
添加到调度中,该调度获取NodeJS路由,我在其中发送了我更新的type 'ADD_LIKE'
和post ID
的操作
我设置了CASE 'ADD_LIKE':
,它使用以下代码段中的代码遍历状态。
以下是该片段:
state.map(item => {
if(item.id === action.postid) {
//i find the specific item, but now im stuck on how to update the likes property of it
}
})
如果有帮助,这是我一直在观看的播放列表,如果你想看到这个人如何实现删除功能,我想使用相同的逻辑添加Likes功能:Link to playlist < / p>
答案 0 :(得分:4)
state.map(item => {
if (item.id !== action.postid) return item; // no need to change other items
const likes = item.likes;
return Object.assign({}, item, {likes: likes + 1}); // [1]
});
行[1]
创建一个具有item
所有相同属性的新对象,但它会覆盖现有属性likes
,只需添加1
。
确保在reducer中为更改的项创建一个新对象,因为您所在州的所有内容都应该是不可变的。