본문 바로가기
TIL

GDSC Ewha 아침 스터디 TIL 5일차 💛

by 치우치지않는 2022. 3. 30.

오늘 GDSC 아침 스터디 시간에는 1. 생활코딩 리덕스 강의를 들었습니다! 

 

리덕스란 소프트웨어 개발의 복잡성을 낮추어 더 predictable 하게 만듦으로써 결과적으로 더 큰 복잡성을 지닌 앱이 되는 것을 돕는 기술입니다. 리덕스의 가장 큰 특징으로는 single source of truth 가 있는데, 이는 리덕스를 사용하는 경우 해당 앱은 하나의 state (객체) 를 갖는다는 뜻입니다. 하나의 개체에 앱에서 필요한 모든 데이터를 저장함으로써 데이터 관리가 수월해지게 됩니다. 리덕스의 또 다른 특징으로는 데이터의 값을 특정 함수를 통해서만 읽거나 수정할 수 있다는 점입니다. 이는 데이터 값이 임의로 수정되는 것을 미연에 방지하여 앱을 predictable 하게 만듭니다. 마지막으로 리덕스에는 state 값이 바뀔 때마다 각각의 컴포넌트에 직접적인 명령이 가능하다는 특징이 있습니다. 

만일 리덕스가 없다면 위 그림의 왼쪽 예시처럼 모든 컴포넌트가 props와 event에 의해 연결되어 있어야할 뿐더러 호출될 필요가 없는 render함수까지 호출되어 버려 비효율적인 프로그래밍이 됩니다. 그러나 오른쪽 예시처럼 redux를 사용하여 데이터를 외부에 저장한다면 state값이 바뀌었을 때 state에서 변경된 값이 전달될 컴포넌트에 직접 값을 전달함으로써 효율적인 프로그래밍이 가능하게 됩니다. 이러한 세 가지 특성으로 본 리덕스의 강점은 

1. 각각의 state가 독립적이기 때문에 UNDO REDO 를 쉽게 할 수 있다.

2. 현재 상태 뿐 아니라 이전 상태를 알 수 있어 문제 해결이 쉬워진다.

3. 모듈 리로딩이 가능해져 코드 작성 시 결과값을 동기적으로 확인할 수 있다. 

입니다. 

이때 state 값은 직접 접근이 불가하여 getState라는 함수를 이용해야 하며 getState 함수에 의해 render 함수가 호출됩니다. render 함수가 return 하는 값은 state 값에 따라 즉각적으로 바뀌게 되므로 state 값이 바뀔 때마다 render 함수를 호출하면 실시간으로 변경된 ui를 확이할 수 있게 되고, 이 기능을 담당하는 함수는 subscribe 함수입니다. 

댓글