검색 기능 구현1
검색 네이비게이션바 구현 - 접힌 모습
- 네이비게이션바에서 평소에는 돋보기 모양 아이콘 형태로 있고 클릭 시 검색창이 나오도록 구현
-
구현 모습

구현 코드 - NavigationBar.js
- ** 간소화로 인해 코드 중 일부 생략된 부분이 있을 수 있습니다.
const NavigationBar = ({ me }) => {
const [showSearch, setShowSearch] = useState(false);
const onOpenSearch = useCallback(() => {
setShowSearch(true);
}, []);
const onCloseSearch = useCallback(() => {
setShowSearch(false);
}, []);
...
return (
<>
...
{ showSearch ?
<Search onCloseSearch={onCloseSearch} /> :
<SearchOutlined onClick={onOpenSearch} />}
...
</>
)
};
...
export default NavigationBar;;
검색 네이비게이션바 구현 - 펼친 모습
- 검색어를 입력할 검색 창
- 게시글 카테고리 : 게시글의 카데코리를 선택해 검색 가능
- 검색 기록 : 이전 검색 기록 배치
구현 모습

구현 코드 - Search.js
- ** 간소화로 인해 코드 중 일부 생략된 부분이 있을 수 있습니다.
const Search = ({ onCloseSearch }) => {
...
return (
/* 검색 아이콘을 눌렀을 때 보이는 페이지 */
<>
<CloseOutlined onClick={onCloseSearch} /> {/* 돋보기 아이콘 */}
{/* 검색바 */}
<SearchBar onAddKeyword={onAddKeyword} />
<div>
<p>카테고리 목록</p>
{categoryData.map((tag) => (
<Link href={`/search/${tag}`} prefetch={false} key={tag}>
<a>
<Button
key={tag}
onClick={() => onTag(tag)}
>
{tag}
</Button>
</a>
</Link>
))}
{/* 검색 기록 */}
<SearchHistory
keywords={keywords}
onClearKeywords={onClearKeywords}
onRemoveKeyword={onRemoveKeyword}
/>
</div>
</>
);
};
...
export default Search;