-
Notifications
You must be signed in to change notification settings - Fork 5
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
[FE] 참여한 사람 입력 시 자음이 분리되는 버그와 리펙터링 #889
Conversation
Test Results135 tests 135 ✅ 7s ⏱️ Results for commit fd6a799. |
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.
고생했어요 웨디! dev.haengdong.pro를 테스트해보다가 버그가 있어서 이슈로 만들어 놨었는데 마침 웨디가 해결해주셨네요!! 감사합니다
client/src/hooks/useMemberName.ts
Outdated
|
||
const useSetNicknameStep = () => { | ||
const [nickname, setNickname] = useState<Nickname>(''); | ||
const useMemberName = (defaultNickname?: string) => { |
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.
여기는 member name이고 clearNickname이라고 함수 이름이 지어져 있어요! 이 둘을 통일 시켜도 좋을 것 같습니다~
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.
오!! 그게 맞겠네요. 감사합니다.
nickname으로 두고 작업하다가 nickname이 회원의 이름이라는 의미에 더 가까워서 너무 범위가 좁은 것 같아 이후에 수정하였는데, 바뀌지 않고 남아있었네요 ..ㅎㅎ
@@ -3,7 +3,7 @@ const EVENT_PASSWORD_LENGTH = 4; | |||
const RULE = { | |||
maxEventNameLength: 30, | |||
maxEventPasswordLength: EVENT_PASSWORD_LENGTH, | |||
maxMemberNameLength: 4, | |||
maxMemberNameLength: 8, |
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.
이거에 대한 이슈가 있었던 걸로 기억해요! 해결해주셔서 감사합니다~
#626 이 이슈도 연결시켜놓을게요
client/src/utils/isDuplicate.ts
Outdated
const isDuplicate = (arr: string[], target: string) => { | ||
return arr.includes(target); | ||
}; |
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.
isDuplicate라는 util을 따로 만드신 이유가 궁금해요
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.
매우매우 사소하지만, isDuplicated 가 조금 더 명확할 것 같긴 해요~!
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.
정말 미세먼지만큼 사소한거긴 한데, includes말고 다른 포함 로직을 사용하게될 수도 있지 않을까해서 보통 이런 유틸도 분리시켜놓는 버릇이 있습니다...
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.
리팩토링 해주신 덕분에 추후 코드 읽기가 더 편해질 것 같네요! 버그 수정 또한 인지하고 있던 부분이라 Issue로 만들어뒀었는데 반영해주시고! 고마워용~😆
client/src/hooks/useMemberName.ts
Outdated
setCanSubmit(false); | ||
}; | ||
|
||
return {errorMessage, canSubmit, name, handleNameChange, clearNickname}; |
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.
코드가 훨씬 잘 읽히는 것 같아요! 👍
client/src/hooks/useMembersStep.ts
Outdated
@@ -124,11 +119,16 @@ const useMembersStep = ({billInfo, setBillInfo, currentMembers, setStep}: Props) | |||
}; | |||
|
|||
return { | |||
errorMessage, | |||
nameInput, | |||
errorMessage: isDuplicate( |
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.
오! 이 부분을 저도 인지하고 Issue로 만들어뒀었는데, 해결해주셨군요! 고마워용
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.
프로덕션이 안되서 dev로 행사를 만들다가 알게되었습니다.... ㅎㅎ..
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 {FixedButton, Input} from '@HDesign/index'; | ||
|
||
type SetEventNamePageProps = UseSetNicknameStepProps & { | ||
type SetNicknameStepProps = Pick<ReturnType<typeof useCreateGuestEventData>, 'nicknameProps'>['nicknameProps'] & { |
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.
항상 느끼는 건데, 유틸리티 타입을 늘 맛있게 사용하시는 것 같아욘
우리도 다들 유틸리티 타입들을 사용하다 보니, 가독성에 문제점 느끼거나 필요를 느낀다면 나중에 어떤 상황에 유틸리티 타입을 쓸지, 타입을 별도로 선언하는것이 나을지 컨벤션을 정해봐도 좋을 것 같네요!! 물론 아직 그정도는 아니라고 생각해요~!
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.
어떤 유틸타입을 쓰는 지도 규칙을 정해두고 사용하면 더 읽기가 쉬워지죠. 좋은 것 같아요 👍
개인적으로는 다음과 같은 규칙을 적용해서 타입을 사용하려고 노력하고 있습니다.
- 훅의 반환 데이터에 의존적인 타입이라면 ReturnType을 사용
- 훅의 반환 데이터가 지엽적이지 않고 serviceType 중 하나라면 typeof 훅이 아니라 serviceType을 조합하여 사용
- 최대한 하나의 타입 원천을 의존하도록 함
client/src/utils/isDuplicate.ts
Outdated
const isDuplicate = (arr: string[], target: string) => { | ||
return arr.includes(target); | ||
}; |
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.
매우매우 사소하지만, isDuplicated 가 조금 더 명확할 것 같긴 해요~!
issue
구현 목적
구현 사항
1. 이름 유효성 검사 유틸 함수를 수정하면서, 기존에 이 함수를 사용하던 로직에서 버그가 발생했습니다. && 이름 상태와 유효성 검사가 반복되므로 이를 훅으로 분리합니다.
다음에도 같은 문제가 생기지 않도록 막고, 중복되는 로직을 하나로 해 원천을 두기 위해서 이름 입력에 대한 로직을 훅으로 분리했습니다.
3. 참여한 사람이 중복되는 경우 에러 메세지를 띄워줍니다.
기존에는 같은 이름을 추가하려고 하면 추가는 안되지만 에러메세지가 안떴습니다.
그래서 에러 메세지가 뜨도록 반환부에 로직을 적어주었습니다.