2017-11-03 1 views
0

나는 다음과 같은 상태를반응 감속기 ID로 찾기를 사용하여 중첩 된 객체를 업데이트하는 방법은 무엇입니까?

const initialState = { 
    photos: [], 
    selectedPhoto:{}, 
    photosTeamId:'', 
    photosProjectId:'' 
}; 

사진이 것은 사진 개체가 배열하고 사진을 객체 내부 의견의 배열이있다. 나는 정확한 사진을 찾은 다음 올바른 의견을 찾고 그 사진을 업데이트하려고 노력하고 있습니다.

여기 코드는 외부 익명 함수 주위에 중괄호를 제외하고 좋아 보이는 내 코드

case actionTypes.COMMENT_UPDATED_TO_PHOTOS: 
      console.log(action.data) 
      return { 
       ...state, 
       photos: state.photos.map((photo) => { 
        photo.id === action.data.selectedPhotoId ? { 
         comments: photo.comments.map((comment) => { 
          console.log(comment) 
          return comment.id === action.data.commentId ? { ...comment, comment: action.data.fullComment } : comment 
         }) 
        } : photo 
       }) 
      } 
+0

귀하의 코드가 아닙니다. 첫 번째 질문에 대한 답변입니다. 여기에 그 대답과 함께 첫 번째 질문의 집계로 두 번째 질문을 만들었습니다. https://stackoverflow.com/q/47068926/747579 –

+0

첫 번째 질문은 다른 유스 케이스였습니다 –

+0

아, 알았어요! 미안 알모그. @ ShubhnikSingh 도와주세요. –

답변

1

입니다. 이 코드 블록을 선언하기 때문에,이 photo.is === ... 전에 return 문이어야한다, 또는 당신은 단순히 식을 얻을 완전히 제거 할 수 있습니다 :

case actionTypes.COMMENT_UPDATED_TO_PHOTOS: 
      console.log(action.data) 
      return { 
       ...state, 
       photos: state.photos.map((photo) => 
        photo.id === action.data.selectedPhotoId ? { 
         ...photo, 
         comments: photo.comments.map((comment) => { 
          console.log(comment) 
          return comment.id === action.data.commentId ? { ...comment, comment: action.data.fullComment } : comment 
         }) 
        } : photo 
       ) 
      } 

UPDATE : 코멘트에 언급 한 바와 같이, 또한 누락 ...photo, 있었다.

+0

감사 정보, 단지 코멘트 데이터를 업데이트하고 싶다면 코멘트 오브젝트는 어떻게해야합니까? {createdBy : {...}, 댓글 : "New jjjj ggggg ggg", createdAt : "2017-11-03T02 : 38 : 16.828Z ", ID :"59fbd698e0048b1474207e8f "} 코멘트 : "새 jjjj의 ggggg의 GGG " createdAt : "2017-11-03T02 : 38 : 16.828Z " createdBy : {이 lastName"코렌 " , 이름 : "제작 : Almog"fullName의 "제작 : Almog 코렌"ID : "59d4821f3c28f634c99e5abf"} ID : "59fbd698e0048b1474207e8f"당신이 코드로, 여기 요구하는지 완전히 확실하지 –

+0

당신 이미 그렇게 한 것 같습니다. 다른 필드를 결과 객체에 추가하여 업데이트 할 수 있습니다 (예 : {... comment, comment : .., createdAt : ..}', 또는 업데이트 할 필드를 다른 객체'updates'에 넣고'{... comment, ... updates}'를 사용할 수 있습니다. . 다양한 방법이 있습니다. – Oblosys

+0

업데이트를 실행하면 다른 필드가 제거 된 것처럼 보이지만 createdAt가 사라졌습니다. 모든 것을 덮어 쓰는 것처럼 –

관련 문제