如何在Reducer的对象内传递嵌套对象

时间:2019-04-24 11:46:20

标签: reactjs redux react-redux

我正在尝试在化简器中的对象内传递嵌套对象。

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 enter image description here

像这里一样被计数

 <Like like={id} likes={Likes.length} />

1 个答案:

答案 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
}