리덕스, 공부해야할까?
리액트만으로는 어려운 상태관리를 도와주는 라이브러리기에, 지금도 꼭 리덕스를 공부해야한다고 생각했다.
그런데 이제는 리액트 자체 기능만을 사용해도 충분한 영역들이 있고, 다른 라이브러리를 사용해 리덕스보다 편하게 개발할 수 있다고 한다.
오늘은 이 리덕스를 사용하면 좋은 경우와 사용하지 않아도 되는 경우, 대체할 수 있는 방법들에 대해 짚고 넘어가려 한다.
내가 처음 리덕스에 관심을 갖게 된 이유는 컴포넌트와는 독립적으로 상태값을 관리하기 때문에 어떤 컴포넌트에서든 전역적으로 접근할 수 있도록 상태를 관리하는 것이 필요했기 때문이다.
그런데 이렇게 글로벌 상태를 사용하는 것만 필요하다면 리액트의 Context API만으로도 충분히 구현할 수 있다.
useState와 useReducer로 상태관리를 하면 Context로 전역 상태를 구현하는 것이다.
리덕스는 글로벌 상태의 값을 업데이트할 때 해당 값이 변경될 때에만 리렌더링한다.
Context는 이러한 성능 최적화가 되어 있지 않아 직접 고려하면서 코드를 작성해야한다.
보통은 관심사를 분리하고 업데이트용과 상태용 Context를 분리한다.
따라서 글로벌 상태가 다양해진다면 다양한 종류의 Context를 일일히 준비해야한다는 단점이 있다.
Context API의 이러한 단점을 보완할 수 있는 라이브러리로, Context를 기반으로 동작한다.
상태와 업데이트를 위한 Context를 따로 만들 필요 없이 하나의 함수로 간편하게 처리할 수 있도록 해준다.
2020년에 릴리즈된 라이브러리로, 리듀서, 액션타입, 액션 생성함수, 초기상태를 하나의 함수로 편하게 선언할 수 있다. 이 라이브러리에서는 이 4가지를 통틀어 slice라고 부른다.