오늘은 Redux에 대해 배웠다. Redux 컴포넌트와 상태(state)를 분리하여 관리할 수 있는 라이브러리이다. Redux는 React의 관련 라이브러리 또는 하위 라이브러리라고 오해하는데, 실은 React 없이도 사용할 수 있는 상태 관련 라이브러리이다.
형제 컴포넌트 간에 데이터를 주고 받을 때, 부모 컴포넌트에 상태를 만들고 부모 컴포넌트를 통해서 주고 받는다. 이때 자식 컴포넌트가 많아진다면? 매우 복잡할 것이다. 이때 Redux를 이용해 상태를 따로 관리한다면 형제 컴포넌트 간의 데이터 주고 받는 것이 편할뿐더러 각 컴포넌트 안에서 기능 구현에 더 집중을 할 수 있다.
모든 상태는 store에 저장 후, 각각 컴포넌트에서 store에 접근 후 사용이 가능하다.
자바 스크립트 객체 형태이다. store에게 해당 애플리케이션 데이터들을 운반해주는 역할을 한다.
{
type: "ORDER", // type지정은 필수!!
drink: {
menu: "americano",
size: "grande",
iced: false
}
}
action에서 store에 데이터를 보낼 때 꼭 reducer를 거쳐서 가야한다. 자세히 말하자면 action객체는 dispatch(메소드)에 전달되고, dispatch는 reducer를 호출해서 새로운 state를 생성하는데 생성된 곳은 store이다.
이 과정을 연결시키는 방법은 2가지가 있다. map, state, props와 hooks 이용방법이 있다. 최근에 나왔고 좀 더 직관적인 redux hooks를 사용하도록 하자!