Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ [YW-63] 최근 검색어 & 유사 태그 검색 #33

Merged
merged 22 commits into from
Dec 25, 2022
Merged

Conversation

SeieunYoo
Copy link
Member

@SeieunYoo SeieunYoo commented Dec 20, 2022

📮 관련 이슈

⛳️ 작업 내용

  • 최근 검색어 구현(로컬스토리지)
  • useQuery 를 이용해 유사 태그 검색 api fetch

🌱 PR 포인트

  1. 유사 태그에도 SEO를 적용할 필요가 있을까?
    -> 유사 태그에는 적용할 필요가 없다고 생각되긴 하는데 여러분 의견이 궁금합니다
  2. useRecentSearch 라는 커스텀 훅에서 로컬스토리지를 통해 최근 검색어를 전반적으로 관리를 하고 있기에 SearchPage 내에서 props 로 내려주고 있음
    -> 맞는 방식일까 고민되네욥
  3. PR 내기 전에 보려니까 api fetch 시간이 30초~ 걸림(??)
    -> 다른 API fetch 했을 땐 괜찮았음
  4. 같은 text-semi-bold 일 때 line-heightfont-size가 다름
    -> 통일 하거나 다른 text-light-bold 같은 다른 type 도 필요해보임

📸 스크린샷

최근 검색어 & 검색어가 없는 경우 -> 인기검색어만 최근 검색어 O & 검색어가 없는 경우 -> 최근 검색어 & 인기검색어
image image
  1. 검색어 입력 시 api fetch -> 의 경우에는 유사 태그 가 없기에(빈배열) 전 검색 결과 유지
스크린샷
image image

📎 레퍼런스

✔️ 변경 사항

  • useLocalStoarge 로 로컬스토리지 관리
  • useDebounce , useDeferedValue 로 api 지연 렌더링 지연

✔️ 고려 사항

  • 현재는 로컬에서 msw가 작동할 수 있게 수정하여 vercel preview에서도 확인할 수 있게 추후 리팩토링 예정 (환경변수 설계)
  • API request, response가공할 수 있는 layer 작업 @elbica
  • 빈 문자열 에러 처리 -> .trim() 처리해주면 됨
  • useDeferredValue 말고 그냥 keepPreviousData 옵션으로 data fetching하기 전에 이전 데이터 유지 (By @elbica)
// src/application/hooks/api/search/index.ts
// # AS-IS
export const useSearchResult = (value: string) => {
  const debouncedQuery = useDebounce(value);
  const deferredQuery = useDeferredValue(debouncedQuery);

  const { data, ...rest } = useQuery<{ tags: SearchResult[] }>({
    queryKey: ["search", deferredQuery],
    queryFn: async () => await getRecentSearch(deferredQuery),
    // keepPreviousData: true,
  });
  return { searchResults: data?.tags };
};

// # TO-BE
export const useSearchResult = (value: string) => {
  const debouncedQuery = useDebounce(value);

  const { data, ...rest } = useQuery<{ tags: SearchResult[] }>({
    queryKey: ["search", debouncedQuery],
    queryFn: async () => await getRecentSearch(debouncedQuery),
    keepPreviousData: true, // *
  });
  return { searchResults: data?.tags };
};

@vercel
Copy link

vercel bot commented Dec 20, 2022

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated
21st-web-team-1-fe ✅ Ready (Inspect) Visit Preview Dec 25, 2022 at 6:29AM (UTC)

@SeieunYoo SeieunYoo self-assigned this Dec 20, 2022
Copy link
Member

@elbica elbica left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

api를 직접 호출 하지 말고 msw를 활용해 보는 것도 좋은 방법 같아!

src/application/hooks/api/search/index.ts Outdated Show resolved Hide resolved
src/application/hooks/common/useRecentSearch.tsx Outdated Show resolved Hide resolved
src/application/hooks/common/useRecentSearch.tsx Outdated Show resolved Hide resolved
src/pages/search/index.tsx Outdated Show resolved Hide resolved
src/application/hooks/api/search/index.ts Outdated Show resolved Hide resolved
src/components/search/SearchBottom/SearchResult.tsx Outdated Show resolved Hide resolved
Copy link
Member

@elbica elbica left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추가 리뷰 달았습니다~!😊

src/infra/api/search.ts Show resolved Hide resolved
src/types/index.d.ts Outdated Show resolved Hide resolved
Copy link
Collaborator

@ojj1123 ojj1123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어프뤂 ~ ~

@SeieunYoo SeieunYoo merged commit 18d2092 into develop Dec 25, 2022
@ojj1123 ojj1123 deleted the feature/YW-63 branch December 25, 2022 06:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

✨ 검색 페이지 최근 검색어
3 participants