-
Notifications
You must be signed in to change notification settings - Fork 6
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
[Design] 그룹 참여/가입 신청 페이지 UI 작성 #506
Conversation
- 프로필 페이지 그룹 버튼 변경
<section className={`${styles.section} ${getCurrentState(1)}`}> | ||
<h3 className={sansBold24}>1. 참여 방법 선택</h3> | ||
<p className={sansRegular18}>어떤 방법으로 그룹에 참여할까요?</p> | ||
<div className={styles.confirmButtons}> | ||
<Button | ||
theme="primary" | ||
shape="line" | ||
size="large" | ||
fullWidth | ||
onClick={() => setCurrentStep(2)} | ||
> | ||
참여 코드로 참여할래요 | ||
</Button> | ||
<NavLink to="/groups" className={styles.navLinkButton}> | ||
<Button | ||
type="button" | ||
theme="primary" | ||
shape="line" | ||
size="large" | ||
fullWidth | ||
> | ||
공개된 그룹을 둘러볼래요 | ||
</Button> | ||
</NavLink> | ||
</div> | ||
</section> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
css로 컴포넌트의 렌더링을 조정하는 것보다 js로 이렇게 쓰는 게 나을 것 같아요.
혹시 다음과 같은 코드를 작성한 이유가 있다면 알려 주세요!
<section className={`${styles.section} ${getCurrentState(1)}`}> | |
<h3 className={sansBold24}>1. 참여 방법 선택</h3> | |
<p className={sansRegular18}>어떤 방법으로 그룹에 참여할까요?</p> | |
<div className={styles.confirmButtons}> | |
<Button | |
theme="primary" | |
shape="line" | |
size="large" | |
fullWidth | |
onClick={() => setCurrentStep(2)} | |
> | |
참여 코드로 참여할래요 | |
</Button> | |
<NavLink to="/groups" className={styles.navLinkButton}> | |
<Button | |
type="button" | |
theme="primary" | |
shape="line" | |
size="large" | |
fullWidth | |
> | |
공개된 그룹을 둘러볼래요 | |
</Button> | |
</NavLink> | |
</div> | |
</section> | |
{currentStep === 1 && ( | |
<section className={styles.section}> | |
<h3 className={sansBold24}>1. 참여 방법 선택</h3> | |
<p className={sansRegular18}>어떤 방법으로 그룹에 참여할까요?</p> | |
<div className={styles.confirmButtons}> | |
<Button | |
theme="primary" | |
shape="line" | |
size="large" | |
fullWidth | |
onClick={() => setCurrentStep(2)} | |
> | |
참여 코드로 참여할래요 | |
</Button> | |
<NavLink to="/groups" className={styles.navLinkButton}> | |
<Button | |
type="button" | |
theme="primary" | |
shape="line" | |
size="large" | |
fullWidth | |
> | |
공개된 그룹을 둘러볼래요 | |
</Button> | |
</NavLink> | |
</div> | |
</section> | |
)} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
특별한 이유는 아니지만 뭔가 사용자에게 세 단계의 입력 과정이 연속적으로 이루어지고 있다는 느낌을 주고 싶었던 것 같아요.
말씀하신 방법이 더 맞는 방법인 것 같아서 코드에 반영하였고, 대신 Stepper 컴포넌트를 추가해서 연속적인 느낌을 주도록 했습니다..!
bandicam.2024-01-26.18-33-06-250.mp4
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 이거 미처 놓치고 지나간 부분인데 지나간 부분은 opacity가 낮아지면서 노출이 되는 거였군요...
두 방법 다 아이디어는 좋은 것 같아요 👍
import * as styles from './index.css'; | ||
|
||
export function GroupJoinPage() { | ||
const { sansBold36, sansBold24, sansRegular18 } = fontStyle; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
function 안에서 정의하는 것보다 외부에서 정의하는 게 좋을 것 같아요.
리렌더링될 때마다 구조분해할당도 일어나지 않을까? 싶은...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
=> 2922361 반영했습니다!
export function GroupLinkPage() { | ||
const { sansBold36, sansRegular16 } = fontStyle; | ||
|
||
const goBack = () => window.history.back(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p3; 뒤로 가기는 window 객체 사용할 건지 react-router-dom 사용할 건지 정하면 좋을 것 같아요.
그룹 참여 | ||
</Button> | ||
</NavLink> | ||
<NavLink to="." className={styles.navLinkButton}> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NavLink의 to에 '.'를 할당하면 어떤 동작이 발생하나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
현재 페이지를 (새로고침 없이) 다시 불러오는 것 같아요. 아직 그룹 생성 페이지에 대한 경로가 정해지지 않아서 일단 임시로 이렇게 작성했습니다!
참여 코드를 입력하면 그룹이 특정 될 것이기 때문에, 참여 코드를 입력한 후 복수 개의 그룹 리스트를 보고 선택하는 동작은 하지 않아야 될 것 같습니다. |
app/frontend/src/hooks/useRouter.tsx
Outdated
import { GroupJoinPage } from '@/pages/Group/Join'; | ||
import { GroupLinkPage } from '@/pages/Group/Link'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p3 : 이 부분도 '@pages'에서 바로 import 해오도록 수정해도 좋을 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- import문 수정
p3: 저도 백지님 의견과 마찬가지로 참여코드를 누군가에게 받아서 신청을 넣었다면 그룹이 특정되기 때문에 추가적으로 선택할 필요는 없을 것 같습니다. 해당 참여코드에 대한 그룹이 맞는지 확인하는 용도로 사용되는 경우는 괜찮을 수도 있는데 이야기 해보면 좋을 것 같아요. |
- 그룹 리스트 페이지 컴포넌트명을 Groups에서 GroupListPage로 변경 - 그룹 링크 페이지 컴포넌트명을 GroupLinkPage에서 GroupJoinPage로 변경 (기존 가입 절차 페이지 대체) - 그룹 링크 페이지는 이제 /groups/:id/join 라우터로 연결됨 - pages/Group 디렉토리 삭제, 하위 파일들을 pages/Groups 경로로 이동
- 비공개 그룹일 시 자물쇠 아이콘 표시 추가
설명
close [FEATURE] 그룹 참여/가입 신청 UI 추가 #505
새로 수정한 플로우는 아래와 같습니다. 혹시 제가 잘못 이해한 부분이나 다른 의견 있으시다면 말씀해 주세요. (URL은 예시입니다)
단순 그룹 정보 표시를 위한
<GroupInfo />
컴포넌트를 추가했습니다. (기존<Group />
컴포넌트와 구별)<Group />
및<GroupInfo />
컴포넌트에 비공개 여부를 표현하는closed
props를 추가하였습니다.기존 마이 페이지에 있던 '그룹 리스트 보기' 버튼명을 '그룹 참여'로 변경했습니다.
기존 그룹 리스트 페이지 컴포넌트를
pages/Groups/List
경로로 이동하였습니다. 컴포넌트 이름도 다른 페이지 컴포넌트와 동일하게<Groups />
에서<GroupListPage />
로 변경했습니다.이제 그룹 참여 동작은 그룹 아이템 컴포넌트가 아닌 해당 그룹의 참여 페이지에서 처리합니다. 따라서
handleJoin()
,openJoinModal()
훅을 그룹 참여 페이지에서 호출하도록 이동하였습니다. (스크린샷을 참고해 주세요)@/components/Group/hooks/...
로부터 불러와 사용하고 있는데, 아마 추후 분리하게 될 수도 있을 것 같습니다.완료한 기능 명세
/group/:id/join
)<GroupInfo />
추가스크린샷
bandicam.2024-01-28.17-34-49-799.mp4