Javascript redux reducer的奇怪行为?
我正在创建一个社交媒体应用程序,用户可以发布帖子,用户可以喜欢或评论该帖子,所有用户的帖子都将显示在主页上,某个用户的帖子将显示在其个人资料页面上 我的问题,liking功能无法正常工作: 我的减速器中存在问题,这是我的代码:Javascript redux reducer的奇怪行为?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在创建一个社交媒体应用程序,用户可以发布帖子,用户可以喜欢或评论该帖子,所有用户的帖子都将显示在主页上,某个用户的帖子将显示在其个人资料页面上 我的问题,liking功能无法正常工作: 我的减速器中存在问题,这是我的代码: case LIKE_POST: case UNLIKE_POST: const allPosts= state.posts.map(post=> { if (post.postId === action.payloa
case LIKE_POST:
case UNLIKE_POST:
const allPosts= state.posts.map(post=> {
if (post.postId === action.payload.postId) {
return {
...post,
likeCount: action.payload.likeCount
}
}
return post;
});
const userPosts= state.userData.posts.map(post=> {
if (post.postId === action.payload.postId) {
return {
...post,
likeCount: action.payload.likeCount
}
}
return post;
})
return {
...state,
posts: allPosts,
userData: {
...state.userData,
posts: userPosts
}
}
当我在reducer中删除该部分时,liking功能似乎在两个页面中都不起作用:
const userPosts= state.userData.posts.map(post=> {
if (post.postId === action.payload.postId) {
return {
...post,
likeCount: action.payload.likeCount
}
}
return post;
})
Liking功能在主页中运行良好,当删除该部分时
const allPosts= state.posts.map(post=> {
if (post.postId === action.payload.postId) {
return {
...post,
likeCount: action.payload.likeCount
}
}
return post;
});
喜欢在用户页面中很有效
我不能让它们一起工作,我不能发布更多的代码,因为它很复杂,但至少为什么删除一个部分会使另一个工作良好???粘贴的代码中是否有拼写错误,或者您的实际代码中是否也有
posts:posts
应该是return中的posts:allPosts
如果您错误地将posts
标记为null,那么您可能会在代码的其他部分访问它们,如posts.length,这将产生错误,并使另一个停止工作。@AtifSaddique谢谢您我修复了这个问题,你可以看到更新有一个严格的标准来区分“…喜欢的功能不能正常工作”和“…喜欢的功能正常工作”?到底是什么问题?为了演示您的问题,您不必将所有代码复制粘贴到您的问题中,但您可以将指向实时代码片段的链接发布到或发布在您觉得合适的任何内容上。您好,我建议您将减缩器写得更清楚一点,以减少出现错误的可能性。1.尽量只将帖子保持一次状态,不要在userData
内部状态中重复。2.尝试在不通过likeCount的情况下分别处理相似和不相似的情况。