• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 react redux의 deep copy 부분 질문드립니다.

react redux의 deep copy 부분 질문드립니다.

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 글쓴이
  • #19286

    최덕희
    참가자

    안녕하세요. 강의 내용 중 이해가 안가는 부분이 생겨 질문드립니다.

    redux에서 매개변수로 받은 데이터를 deep copy( [...state] ) 해서 사용하는데 
    어째서 data값이 변경되는지 이해가 가지 않습니다.

    copy값과 data값은 서로 다른 객체 아닌가요?

     

    [코드]

    let data = [{name:1}]
    function reducer(state=data,action) {
      if(action.type === "Log") {

        let copy = [...state]
        copy[0].name++

        return copy
      }
      return state
    }
    let store = createStore(reducer);

    #19287

    codingapple
    키 마스터

    리덕스는 reducer안에서 return한 내용으로 state를 변경해주기 때문에 변경됩니다

    #19301

    오진희
    참가자

    저도 이부분이 궁금했었는데 ㅎㅎ 혹시 저기 만든 리듀서 함수가   원래자바스크립트  배열 함수 reduce(prev, cerrent)  랑  같은개념인가요???  저함수안에서 리턴한 값이 다시  prev 파라매터로 들어가는 , 그래서 계산 끝날때까지 반복적으로 연산?되는??  고런??   그래서 대강 저혼자..저런원리로  이해하고 넘어가거렸거든욤....

    그래서 이름도 비슷한가용?   

    #19308

    codingapple
    키 마스터

    넴 그거 reduce() 랑 동작이 비슷해서 그거따와서 이름지은겁니다 

    #19313

    최덕희
    참가자

    답변 감사합니다. 궁금한게 하나 더 생겨 댓글로 질문드립니다~

    state나 data를 직접 건드려서 변경하지 않는 건 관습인가요?

    copy변수를 따로 만들어서 구현하는 이유가 있나요?

     

    #19322

    codingapple
    키 마스터

    그냥 관습이기도 하고

    이전 state와 현재 state가 다른 점이 생겼는지 등호로 비교하는데

    array, object 로 만든 state일 경우

    array, object 자료는 reference만 저장하는 자료기 때문에

    state를 대충 복사하거나 대충 수정하면 기존 state와 reference가 달라지지 않았기 때문에 차이점이 없다고 생각합니다 

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠