React-hot-loader 사용하기
react-hot-loader는 코드가 변경되었을때 페이지를 새로고침하지 않고 바뀐 부분만 빠르게 교체해주는 라이브러리다. 리액트 앱 개발을 할때 필수적인 라이브러리는 아니지만, 규모가 커지면 개발 중 수정사항이 생길때마다 새로고침이 되어버리면 입력한 내용이 전부 사라져 다시 입력해야하는 번거로움 같이 개발에 딜레이가 발생되어 흐름이 끊긴다.
예시로 styled-components를 사용할 경우에 스타일이 js안에 있기 때문에 수정할때마다 새로고침이 되는 점이 매우 불편하다.
나 역시 개발을 하면서 파일 저장 시에 새로고침이 되는 문제가 매우 불편했는데 이 라이브러리를 사용하고나서 문제가 해결되었다.
react-hot-loader 설치
yarn add --dev react-hot-loader
# OR
npm i react-hot-loader --save-dev
설치가 완료되었다면 package.json에서 babel 부분을 수정한다.
"babel": {
"presets": [
"react-app",
"mobx"
],
"plugins": [
"react-hot-loader/babel"
]
},
바뀐점은 plugins를 추가해준 것 이외에 따로 변경한 부분은 없다.
나의 경우 CRA(Create-React-App)을 사용하여, package.json에 babel을 수정하기 위해 yarn run eject을 해주었다.
hot 설정
설정을 마쳤다면 프로젝트의 최상위 컴포넌트에서 hot을 불러온 뒤 export default hot(module)(ComponentName)
형식으로 작성해주기만하면 된다.
import React from 'react'
import { BrowserRouter } from 'react-router-dom'
import App from 'components/App'
import { hot } from 'react-hot-loader'
const Root = () => {
return (
<BrowserRouter>
<App />
</BrowserRouter>
)
}
export default hot(module)(Root)
js 파일을 수정 후에 저장을 눌러보면 기존에 새로고침되던 부분이 이제는 변경된 부분만 알아서 바뀔 것이다.
마무리
나는 프로젝트 개발을 하면서 저장할 때마다 새로고침되는 문제가 매우 거슬렸는데 이 라이브러리를 사용하고 난 후에는 개발이 수월해졌다. 나와 같은 경험을 겪고있는 주변사람이 있다면 추천해보는 것을 권유한다.