"상태관리 라이브러리의 필요성에 대해서 설명해주세요."
"Redux와 같은 상태관리 라이브러리는 전역 상태 저장소를 제공해줍니다.
기존의 React에서는 자식 컴포넌트에 props를 내려줘서 상태를 전달해줬습니다.
이 경우에는 해당 상태를 사용하지 않는 컴포넌트들도
오로지 상태를 전달해주기 위해서props를 받아야 했고,
이를 props drilling이라고 합니다.
상태 관리 라이브러리는 전역 상태 저장소를 제공해줌으로써
이 props drilling 문제를 해결해줍니다.
전역 상태 저장소가 있다면 props를 내려줄 필요없이
바로 이 저장소에 접근해서 필요한 상태
를 가져다 사용하면 되기 때문입니다. "
"Redux의 주요 개념들과 연결 관계를 설명해주세요.."
"Redux의 주요 개념으로는 Action, Dispatch, Reducer, Store가 있으며, Action → Dispatch → Reducer → Store 순서로 데이터가 단방향으로 흐르게 됩니다.
Action은 말 그대로 어떤 액션을 취할 것인지 정의해 놓은 객체입니다. 해당 Action 객체가 어떤 동작을 하는지 명시해주는 type 속성을 가집니다.
Dispatch는 Reducer로 Action을 전달해주는 함수입니다. Dispatch의 전달인자로 Action 객체가 전달되며. Action 객체를 전달받은 Dispatch 함수는 Reducer를 호출합니다.
Reducer는 Dispatch에게서 전달받은 Action 객체의 type 값에 따라서 상태를 변경시키는 함수로, Reducer가 리턴하는 값이 새로운 상태가 됩니다. 이 때, Reducer는 순수함수여야 합니다.
외부 요인으로 인해 기대한 값이 아닌 엉뚱한 값으로 상태가 변경되는 일이 없어야하기 때문입니다.
Store는 Redux의 전역 저장소로, Redux 앱의 state가 저장되어 있는 오직 하나뿐인 저장소의 역할을 합니다."