검색 기능의 구현 계획은
- 검색창에 글을 입력하면 입력되는 글을 이벤트로 받아 바로 서버에 요청을 보내고 응답을 받는다.
- 받은 응답을 바로 랜더링해서 보여준다.
- 이벤트 앞 뒤에 b태그를 달아 tailwind로 커스텀 CSS를 입혀 색을 다르게 보여준다.

인풋 태그에
onChange이벤트를 달아 변경될때마다handleQuery가 실행되도록 하였다.

handleQuery에서는 이벤트를 받고, 한글,영문,숫자인지 정규표현식을 통해 테스트를 하고, 테스트를 통과하면getSearchResult가 실행되도록 했다.
getSearchResult를 통해 쿼리를 해당 API에 호출한 후 검색 결과를 searchResult 상태에 등록되도록 했다.
서버쪽에서는 쿼리를 받아
sequelize의Op.like를 통해(SQL의 like문) 타이틀에 해당 쿼리가 포함된 postData들을 찾아 보내주었다.

간단하게
searchResult의 length를 통해 데이터가 있을때와 없을 때를 분기해줬고, 각 타이틀을 클릭하면 그 포스트의slug를 통해서 디테일페이지로 넘어갈 수 있도록 구성했다.
이 중에 특이한 점은.. 타이틀을 표시하는 파트에dangerouslySetInnerHTML을 사용한 것인데, 그 이유는 밑에서..

타이틀을 랜더링하는 span 태그에
dangerouslySetInnerHTML와 replace 함수를 통해queryValue를<b>queryValue<b>로 랜더링 되게 해 주었다.

tailwindcss는tailwind.config.js를 통해 커스텀이 가능하다. 여기서<b>태그의 경우 공감병동 사이트에서 사용하는 메인 블루의 색상으로 커스텀 해 주었다. 이를 통해 검색어가 다른 색으로 랜더링될 수 있게 처리했다.

만족스럽다..!