redux패키지분석

Jul 6th 2021 by jyoon

getState의 반환값은 뭘까?

  • 아래 파일 위치의 redux의 createStore.js 파일을 분석해보자
  • node_modules/redux/src/createStore.js
  • createStore 함수하나로 구성 되어 있다.
  • line 32: createStore 함수는 첫번째 파라미터로 reducer pure function을 받는다.
  • line 305: dispatch 함수를 type이 ActionTypes.INIT에의해서 수행
  • line 218: dispatch 함수 내에서 인자로 받은 reducer을 실행하고 반환값을 currentState에 할당
  • line 308: createStore 함수 반환 객체들이며 여기서 getState가 포함 되어 있다.
  • line 93: getState 함수가 있고 반환값은 currentState이다.

subscribe은 언제 수행되고 어떻게 수행되는 대상 될까?

POINT1: subscribe 함수 수행

POINT2: 수행 대상 설정

  • 먼저 subscribe 함수 부터 분석해보자
  • line 128: subscribe 함수가 있다.
  • line 149: 72 line에 있는 nextListeners 배열에 push 한다. (POINT2: 수행 대상 설정)
  • line 223: dispatch 함수내에서 nextListeners을 순회 하며 배열에 담긴 function을 실행한다.(POINT1: subscribe 함수 수행)

unsubscribe에 대해서 알아보자

  • line151: unsubscribe은 subscribe 함수의 return 값이다.
  • 그래서 subscribe함수를 설정하고 return 값을 변수에 담고(이 unsubscribe 함수가 담긴다)
  • dispatch 이후에 함수가 수행되는 것을 멈추기 위해서는 해당 return 값을 수행시킨다.
  • line 166: subscribe 함수 수행시에 "nextListeners" 배열에 함수가 담기는데, 이 배열에서 indexOf 함수를 통해 subscribe함수 호출시에 인자 값으로 넘긴 listener 함수로 몇번째 인덱스에 있는지 찾은후 splice 함수로 제거한다.