안녕하세요! 리액트를 다루는 기술의 개정판이 출간되었습니다. 초판은 한동안 절판이 되어서 구매가 불가능했는데요..! 이제 드디어 개정판을 읽어보실 수 있게 되었습니다.
현재 yes24 에서 예약판매중 입니다 (링크)
이 포스트에서는 개정판에서 어떤 내용이 바뀌었는지 알아보도록 하겠습니다.
리액트를 다루는 기술 개정판이 만들어지면서, 내용들이 정말 많이 바뀌게 되었습니다. 2019년 초, 리액트 16.8 버전에서 Hooks라는 기능이 도입되면서, 리액트 컴포넌트 개발 방식에 정말 큰 변화가 생겼습니다. 기존에는 컴포넌트에서 상태 관리를 하기 위하여 클래스형 컴포넌트를 만들어서 사용하는 것이 필수였지만, 이제는 Hooks를 사용하여 함수형 컴포넌트에서도 상태 관리를 할 수 있게 됐습니다. 또한, 리액트 컴포넌트의 Lifecycle 메서드를 대체할 수 있는 Hooks 도 있어서 더 이상 클래스형 컴포넌트를 사용할 이유가 없게 되었습니다. 이에 맞춰, 책에서 사용된 주요 예시들을 모두 함수형 컴포넌트 형태로 전환하였습니다.
책에서 기존에 다루지 않았던 내용들도 새로 많이 수록되었는데요, 새로 수록되거나, 변경된 주요 내용들은 다음과 같습니다.
최신 리액트 개발 패러다임에 맞춰 책에 있는 대부분의 예시를 함수형 컴포넌트와 Hooks를 사용하는 형태로 전환하였고, 리액트에 내장되어있는 Hooks API에 대한 내용을 자세히 다루는 장이 새로 추가되었습니다.
기존 초판에서는 Immutable.js를 사용하여 불변성을 쉽게 지키는 방법을 다뤘었는데, 사용방법이 까다롭고, 해당 라이브러리를 사용할 시 컴포넌트들을 만들게 될 때 Immutable.js 에 대한 의존이 생긴다는 단점 때문에 Immutable.js를 다루는 내용을 없애고 Immer를 다루는 내용을 추가하였습니다.
성능 최적화를 하는 과정에서 초판에서는 shouldComponentUpdate를 통한 성능 최적화만을 다뤘었지만 여기서 더 나아가서 스크롤 밖의 컴포넌트들을 렌더링 하지 않는 방식을 사용하여 최적화를 하는 react-virtualized라는 라이브러리를 추가적으로 다루게 되었습니다.
리액트 프로젝트 개발의 경험치를 쌓기 위하여, 책 후반부의 커다란 프로젝트를 만들어보기 전에 책 내용의 중간에 작은 프로젝트를 다루는 내용을 추가하였습니다.
기존에는 리덕스를 사용해서 전역 상태를 관리하는 방법을 배웠었는데요, 리덕스를 사용하지 않고도 전역 상태를 관리할 수 있게 해주는 리액트의 내장 기능 Context에 대해서 다루는 내용을 추가하였습니다.
리액트에 Hooks 가 소개된 이후, 리덕스에서도 connect 함수 대신에 Hooks를 사용하여 컴포넌트를 리덕스와 연동할 수 있게 되었습니다. 이에 대한 내용이 추가되었습니다.
초판에서는 리덕스에서 비동기 처리를 다루기 위하여 redux-pender라는 미들웨어를 사용했었는데요, redux-pender의 경우 사용법은 편리하지만 대중성이 떨어지기 때문에 책에서 해당 내용을 제외하고, redux-saga를 사용하여 편하게 비동기 작업을 관리하는 방법을 다루었습니다.
초판에서는 컴포넌트 파일을 코드 스플리팅 하기 위하여 직접 withSplitting이라는 함수를 만들어서 사용했었는데, 이번 개정판에서는 해당 내용을 없애고 리액트에 새로 탑재된 React.lazy 와 Suspense를 사용하여 컴포넌트 코드 스플리팅을 하는 방법을 추가하였습니다.
초판에서는 맨 마지막 프로젝트에서 서버사이드 렌더링을 구현했었는데, 이번 장에서는 따로 서버사이드 렌더링만 다루는 장을 분리하였습니다. 추가적으로, 초판에서는 코드 스플리팅과 서버사이드 렌더링을 하기 위해서 서버사이드 렌더링 시에는 코드 스플리팅을 사용하지 않는 방식을 사용하여 구현을 했었는데, 이번 개정판에서는 loadable-components라는 라이브러리를 사용하여 더욱 정석적인 방법으로 구현해보게 됩니다.
초판에서는 백엔드 API를 만드는 과정에서 단순 관리자 비밀번호 인증만 구현을 했었는데요, 이번에는 JWT 토큰 인증시스템을 기반으로 회원가입 및 로그인 기능을 구현해보게 됩니다.
책의 후반부에서 다루는 블로그 프로젝트도 처음부터 새로 작성되었습니다. 초판에서 다뤘던 기존 프로젝트와 주요 차이점은 다음과 같습니다.
우선 리스팩트!! 개정판 출간이라니 정말 독자에 대한 배려심이 깊다고 생각됩니다. 더불어 몇가지 궁금한 것을 여쭤 봅니다.
1. 저는 redux-saga 만 써봤었는데요, 흔히 말하는 러닝 커브가 좀 있는 느낌을 받았습니다. 그러다 mobx-state-tree에 대해 알게 되었고 괜찮아 보인다는 생각을 했는데, 혹시 비교해 보셨는지, 만약 비교해 보았다면 그 중 redux-saga를 선택한 이유가 있는지 궁금합니다.(혹시 책에 써 있으려나..?)
2. 최근 react만 쓰다가 vue를 공부해 보고 있는데, react 쓸 때는 설계에 대해서 고민하는라 시간을 많이 보냈었는데, vue를 접해보니 설계에 대해서 고민할 필요 없이 '이렇게 설계할 수 밖에 없는' 부분들이 있어 보였고, 그게 불편하기 보다는 최적의 설계 방향을 가이드 하는 느낌을 받아 좋았습니다. 그래서 그나마 익숙해진 react를 깊이 공부하는 것보다 vue를 새로 배우는 것에 더 관심을 가지고 있는 상황인데요, 본인은 개인적으로 어떤 느낌인지 '주관적인' 관점에서 말씀해주실 수 있을까요?
축하드립니다~~!
초판을 종이책으로 샀었는데 좀 무거워서 찾아보니 초판도 전자책이 있었군요ㅠㅠ
이번책은 전자책으로 사야겠네요ㅎㅎ