我正在尝试在化简器中的对象内传递嵌套对象。
im告诉redux将like
与...post
一起传递。但是它给了我
like未定义。
减速器
const initialState = {
post: [],
postError: null,
posts:[],
isEditing:false,
isEditingId:null,
likes:0,
postId:null
}
case ADD_LIKE:
console.log(action.id) // renders post id which is 2
console.log(state.posts) // logs posts array
console.log(state.posts)
return {
...state,
posts: state.posts.map(post => {
if (post.id === action.id) {
post.Likes.map( (like) => {
console.log(like); // renders like log
})
}
return {
...post,
...like, /// need to pass the like here but it says is not defined
Likes: like.Likes + 1
}
})
};
console.log(like); // renders this
像这里一样被计数
<Like like={id} likes={Likes.length} />
答案 0 :(得分:1)
我认为您的退货有问题。
从代码中,在此处初始化like
变量(在地图内部)。
post.Likes.map( (like) => {
console.log(like); // renders like log
})
因此,like的范围不会在它之外。 但是,您正在尝试从外部访问它。
return {
...post,
...like,
Likes: like.Likes + 1
}
已编辑
如果我理解您的期望正确的话。 解决方法在这里。
return {
...post,
...post.Likes,
Likes: post.Likes.length + 1
}