Как передать вложенный объект в объект в редукторе - PullRequest
1 голос
/ 24 апреля 2019

Я пытаюсь передать вложенный объект в объекте внутри редуктора.

я говорю, что редуксу нужно передать like вместе с ...post.Однако это дает мне

, как не определено.

Редуктор

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 Ответ

1 голос
/ 24 апреля 2019

Я думаю, у вас есть проблемы внутри возврата.

Из кода, здесь вы инициализируете переменную like (внутри карты).

post.Likes.map( (like) => {
  console.log(like); // renders like log
})

Таким образом, область подобия не будет существовать вне ее. Но вы пытаетесь получить к нему доступ в ответ.

return {
   ...post,
   ...like,
   Likes: like.Likes + 1
} 

1011 * Отредактированный *

Если я правильно понимаю ваши ожидания. Здесь решение.

return {
     ...post,
     ...post.Likes, 
     Likes: post.Likes.length + 1
} 
...