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

feat: 상품 목록 페이지 구현 #57

Merged
merged 29 commits into from
Mar 22, 2024
Merged

feat: 상품 목록 페이지 구현 #57

merged 29 commits into from
Mar 22, 2024

Conversation

Leejin-Yang
Copy link
Contributor

@Leejin-Yang Leejin-Yang commented Mar 19, 2024

Issue

✨ 구현한 기능

  • 상품 목록 페이지 구현
  • 페이지 이동 시 history state를 통해 상태 전달
  • useSelect, SelectOptionList 작성
편의점 상품 공통 상품 바텀시트
IMG_7343 IMG_7345 IMG_7344

📢 논의하고 싶은 내용

  • 카테고리타입과 카테고리를 페이지 이동시 어떻게 넘겨주어야할까 고민하다 react-router-dom state을 참고해 history state에 담아 넘겨주었습니다. 그래서 각 헤더에 달린 링크와 카테고리 버튼에 해당 속성을 추가했습니다. 어떤 형태로 넘겨줄지 몰라 일단 타입은 any로 작성했습니다. 그래서 카테고리 컨텍스트 없애도 될 듯?!
  • 기존의 useSortOption, SortOptionList는 SortOption 타입만 받을 수 있어 {label, value} 형태의 값을 다룰 수 있도록 useSelect, SelectOptionList를 새로 만들었습니다. 카테고리의 경우 {label, value} 형태로 한번 맵핑해 사용했습니다.
  • 나머지는 자잘한 스타일 수정이 있는데, 헤더에 z-index를 주었더니 바텀시트보다 앞에 있네요.. 바텀시트를 수정해야할까요?

🎸 기타

@hae-on 꿀조합 랭킹 졍렬 문제 상품 목록 쪽에도 있어서 이미지 비율 조정으로 해봤는데 ProductList, ProductItem 부분 확인해주세요. 이대로 꿀조합 랭킹도 수정하면 될 듯 합니다.

⏰ 일정

  • 추정 시간 : 4시간
  • 걸린 시간 : 3시간

@Leejin-Yang Leejin-Yang requested review from xodms0309 and hae-on and removed request for xodms0309 March 19, 2024 21:19
@Leejin-Yang Leejin-Yang self-assigned this Mar 19, 2024
@Leejin-Yang Leejin-Yang requested a review from xodms0309 March 19, 2024 21:19
Copy link

🔗 배포된 storybook 주소: https://65f015a4aed45406385006ee-ikhxpvniys.chromatic.com/

Copy link
Contributor

@hae-on hae-on left a comment

Choose a reason for hiding this comment

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

react-router-dom state

react-router-dom state 링크 들어가서 읽어봤는데 이게 Link 안에 state라고 적으면 그걸 기억하는거고, useLocation을 통해 state를 불러서 그 값을 사용하는건가요? 흐름을 모르겠어요,,,
또, 예전에 요즘은 쿼리 파라미터로 전역 값 넣어서 쓰는게 유행이라고 들은 적 있는데 그거랑 관련 있는 건가요?

나머지는 자잘한 스타일 수정이 있는데, 헤더에 z-index를 주었더니 바텀시트보다 앞에 있네요.. 바텀시트를 수정해야할까요?

하... 이거 div role dialog 때문에 또 최상위가 안 돼서 이런 문제가 있네요.
얘 아예 dialog 태그로 가면 해결 되는 문제일 거 같은데 그러면 또 토스트 때문에...
그냥 디자이너분들한테 리뷰 작성 페이지로 가달라고 하는거 어때요?
그러면 토스트 문제 사라지고 여기도 괜찮아지거든요??
아니면 또 토스트를 수정하는 방법도 있습니다...
어떤게 좋을까요??

꿀조합 랭킹 졍렬 문제 상품 목록 쪽에도 있어서 이미지 비율 조정으로 해봤는데 ProductList, ProductItem 부분 확인해주세요. 이대로 꿀조합 랭킹도 수정하면 될 듯 합니다.

그러면 이제 부모 컨테이너의 크기에 따라 리스트 크기가 유동적으로 들어가는거죠?
전 좋습니다~~

objectFit: 'cover',
aspectRatio: '1 / 1',
Copy link
Contributor

Choose a reason for hiding this comment

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

얜 뭔가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

종횡비 지정해주면 이미지를 그 비율에 맞춰줍니다
https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio

<button type="button" className={cx(selectButton, sortButton)} onClick={openBottomSheet('sort')}>
<span>{currentSortOption.label}</span>
<span>
<SvgIcon variant="arrow" width={8} height={8} style={{ transform: 'rotate(-90deg)' }} />
Copy link
Contributor

Choose a reason for hiding this comment

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

이 arrow는 기존에 있던건데 피그마에 있는거랑 비슷한가여?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

아 기존거군요.. 크게 차이는 없어 보여서 사용했슴다

type BottomSheetOption = 'category' | 'sort';

export const ProductListPage = () => {
const { state: categoryId } = useLocation();
Copy link
Contributor

Choose a reason for hiding this comment

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

이게 불러오는 값이고

Comment on lines +50 to +51
<PageHeader title={pageTitle} hasBackLink hasSearchLink state={category} />

Copy link
Contributor

Choose a reason for hiding this comment

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

여기 state에 저장하는건가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

넵 링크 넘어갈 때 상태 담아서 넘겨준다 생각하면 됨다

Comment on lines +34 to +42
export const cu = style({
vars: {
[categoryBorder]: '#aace37',
[categoryColor]: '#652d8d',
},
color: categoryColor,
borderColor: categoryBorder,
});

Copy link
Contributor

Choose a reason for hiding this comment

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

오오 이렇게 할 수 있군요??

@Leejin-Yang
Copy link
Contributor Author

Leejin-Yang commented Mar 20, 2024

@hae-on

react-router-dom state 링크 들어가서 읽어봤는데 이게 Link 안에 state라고 적으면 그걸 기억하는거고, useLocation을 통해 state를 불러서 그 값을 사용하는건가요? 흐름을 모르겠어요,,,

옙 맞습니다

또, 예전에 요즘은 쿼리 파라미터로 전역 값 넣어서 쓰는게 유행이라고 들은 적 있는데 그거랑 관련 있는 건가요?

예시를 볼 수 있을까요?? 현재는 쿼리 스트링은 사용하지 않슴다. 쿼리 스트링을 사용하면 url로 여러 옵션에 바로 접근할 수 있으니 좋겠네요

하... 이거 div role dialog 때문에 또 최상위가 안 돼서 이런 문제가 있네요.

스크린샷 2024-03-20 15 34 09

현재 dialog div에 z-index가 먹지 않고 있는데, 이렇게 수정하면 될 거 같네요?

Copy link
Member

@xodms0309 xodms0309 left a comment

Choose a reason for hiding this comment

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

고생하셨습니다~

저희 근데 바텀시트는 안옮겨오나요?!

import NotFoundPage from '../NotFoundPage';

import { ErrorBoundary, ErrorComponent, Loading, SelectOptionList, SvgIcon } from '@/components/Common';
import PageHeader from '@/components/Common/PageHeader/PageHeader';
Copy link
Member

Choose a reason for hiding this comment

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

이거 index.ts에서 추가해주시 ㄹ수 있나요 범인은 따로 있긴 한거 같은데 ㅋㅋ

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ㅋㅋㅋㅋㅋ

import { PATH } from '@/constants/path';

interface PageHeaderProps {
title: string;
hasBackLink?: boolean;
hasSearchLink?: boolean;
state?: any;
Copy link
Member

Choose a reason for hiding this comment

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

unknown으로 쓸까요?? 나중에 state로 뭐가 더 들어올 수 있을지 모르니까..

@hae-on
Copy link
Contributor

hae-on commented Mar 20, 2024

예시를 볼 수 있을까요?? 현재는 쿼리 스트링은 사용하지 않슴다. 쿼리 스트링을 사용하면 url로 여러 옵션에 바로 접근할 수 있으니 좋겠네요

건너들은거라 예시는 없습니다 찾아봤는데 안나와요ㅠ 유행하는 거 맞음...?ㅎ,,,,

현재 dialog div에 z-index가 먹지 않고 있는데, 이렇게 수정하면 될 거 같네요?

근데 지금 dialog가 짭 dialog인데 우리 안 바꿔도 돼요???
위에 적어놨듯이 div dialog말고 찐 dialog로.
그리고 쟤 지금 어차피 디자인시스템에 있어서 z-index 추가 못하지 않아요??

@Leejin-Yang
Copy link
Contributor Author

@xodms0309

바텀시트 일단 쓰죠..

@hae-on

https://dev.to/xiel/hooks-to-persist-state-in-the-query-string-or-history-state-in-react-44a7
https://medium.com/@yiupang.ch/reasons-why-params-on-url-is-the-best-state-management-tool-aff72b81393d
쿼리 스트링이면 이런 느낌이려나요?
relative랑 z-index만 추가해서 배포할까요?

Copy link

🔗 배포된 storybook 주소: https://65f015a4aed45406385006ee-krnrdkpoum.chromatic.com/

@hae-on
Copy link
Contributor

hae-on commented Mar 20, 2024

어어 저거 맞는 듯???
근데 리액트 훅에 useQueryState라는게 있었어요?
검색했는데 npm 라이브러리만 나오는데....?

얍얍 일단 귀찮으면 dialog 속성 추가해서 배포하는거 괜춘!

@Leejin-Yang
Copy link
Contributor Author

IMG_7346

디자인 시스템 수정 완

Copy link

🔗 배포된 storybook 주소: https://65f015a4aed45406385006ee-bvhifcxxob.chromatic.com/

@Leejin-Yang
Copy link
Contributor Author

@hae-on

아 문제 발견... 그냥 뒤로가기 하면 상태를 못가지고 가네요. 쿼리 스트링으로 해야할듯

@hae-on
Copy link
Contributor

hae-on commented Mar 20, 2024

그 react router dom state 쓰면 뒤로가기 했을 때 안된다는거죠??
쿼리 스트링 도전해보시죠. 저거 괜찮은 거 같음!
그리고 제가 방금 yarn.lock 다시 깔아서 충돌 났어요 죄송 😗

@Leejin-Yang
Copy link
Contributor Author

@hae-on
생각해보니까 그냥 뒤로가도 쿼리 스트링 값을 못가져오네요?? 쌍방으로 해야될거 같은데 그럼 싹 갈아 엎어야 해서... 그리고 상태로 넘겨주는건 카테고리 아이디더라구요. 카테고리는 param에 있네요. 걍 넘어갈게요..?

Copy link

🔗 배포된 storybook 주소: https://65f015a4aed45406385006ee-dkxrfspcjr.chromatic.com/

@Leejin-Yang Leejin-Yang merged commit 694e99e into feat/v2 Mar 22, 2024
1 check failed
@Leejin-Yang Leejin-Yang deleted the feat/issue-55 branch March 22, 2024 04:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

상품 목록 페이지 구현
3 participants