URL을 통해 사이트에 접속했을 때, SPA의 특징으로 첫 화면은 비어있는 body가 로드됩니다. 이때 크롤링봇이 첫 빈 화면을 크롤링하기 때문에 정상적으로 크롤링을 하지 않습니다. 이 문제를 해결하기 위해 react-snap을 이용해 일정 시간이 지나면 크롤링하도록 설정합니다.
// package.json
"scripts": {
"start": "react-scripts start",
"postbuild": "react-snap"
},
"reactSnap": {
"include": [
"/",
"/result",
"/filters"
]
},
hydrate 함수를 이용해 이미 존재하는 돔 구조를 초기화하지 않고 이어서 사용하도록 합니다.
// index.js
const rootElement = document.getElementById('root')
if (rootElement !== null && rootElement.hasChildNodes()) {
hydrate(
<Router basename="Assignment4-DW-SW">
<Provider store={store}>
<App />
</Provider>
</Router>,
rootElement
)
} else {
render(
<Router basename="Assignment4-DW-SW">
<Provider store={store}>
<App />
</Provider>
</Router>,
rootElement
)
}