반응형
검색 기준을 제목, 내용으로 확대
기존에는 일기 내용만 검색이 가능하도록 구현했는데 제목도 검색 항목에 추가하고 싶었다.
const SearchedData = diaryCtx.diary.filter((it) => {
if (inputText !== "") {
return it.content.toLowerCase().includes(inputText);
}
});
현재 검색어를 포함한 일기를 포함한 로직은 위와 같은데, 여기서 조금만 손을 봐서 일기 제목도 검색 가능하도록 수정해 보려고 한다.
const SearchedData = diaryCtx.diary.filter((it) => {
if (inputText !== "") {
if (it.content.toLowerCase().includes(inputText)) {
return it.content.toLowerCase().includes(inputText);
}
if (it.title.toLowerCase().includes(inputText)) {
return it.title.toLowerCase().includes(inputText);
}
}
});
간단하게 filter 함수 내부에 제목을 검색할 수 있는 코드를 추가해주었다.
만약 content에 inputText와 동일한 글자가 포함되어 있다면 해당 배열을 리턴해준다. 제목에 동일한 글자가 포함되어 있을 때도 마찬가지의 동작을 수행한다.
제목과 본문 내용 중 하나라도 inputText에 해당하는 글자가 있다면 모두 검색하고 싶었기 때문에 하나의 filter 함수에 두 가지 코드를 모두 작성하면 되었다.
🚜 결과
검색 결과를 화면이 아닌 본문에 추가하기
'location.state.inputText'를 출력하던 코드를 header 아래로 내려주기만 하면 되는 간단한 수정이었다.
다만 검색한 내용이 너무 길어지면 화면에 글자를 출력하는 데 공간을 너무 많이 쓰게 되므로 20자까지 끊어서 출력하고 그 뒤는 말줄임표로 대체했다.
추가로 strong 태그를 이용해 검색결과 내용은 따로 강조해서 보여주었다.
<div className="searchResult">
<strong>
{location.state.inputText.length <= 20
? `'${location.state.inputText}'`
: `'${location.state.inputText.slice(0, 20)}...'`}
</strong>
{` 검색 결과입니다.`}
{location.state.SearchedData.map((it) => (
<DiaryItem key={it.id} {...it} />
))}
</div>
🚜 결과
COMMIT
:sparkles:검색 기능 향상 · Yoonyesol/Dream_note@403662e
검색 기준을 제목, 내용으로 확대, 검색 결과를 화면이 아닌 본문에 추가하기
github.com
반응형
'웹 프로젝트 > 🌜꿈 일기장' 카테고리의 다른 글
[React] 꿈 일기 기록 사이트 제작 일지-15. Firebase를 이용한 회원가입 기능 구현 (0) | 2023.09.29 |
---|---|
[React] 꿈 일기 기록 사이트 제작 일지-14. 플로팅 버튼 만들기 (1) | 2023.09.28 |
[React] 꿈 일기 기록 사이트 제작 일지-12. 반응형 웹 CSS 스타일링 (0) | 2023.09.27 |
[React] 꿈 일기 기록 사이트 제작 일지-11. 일기 검색 기능 추가 (0) | 2023.09.27 |
[React] 꿈 일기 기록 사이트 제작 일지-10. 사용자가 장르를 수정할 수 있는 `사용자 장르 추가/삭제 기능` 구현 (+ localStorage) (2) | 2023.09.27 |
[React] 꿈 일기 기록 사이트 제작 일지-6. 일기아이템 생성 및 조회 페이지 이동 구현과 CSS 스타일링 (0) | 2023.09.25 |