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

Develop/login page #13

Merged
merged 34 commits into from
Oct 5, 2023
Merged

Develop/login page #13

merged 34 commits into from
Oct 5, 2023

Conversation

cla6shade
Copy link
Member

๐Ÿ”ฅ ์—ฐ๊ด€ ์ด์Šˆ

#12

๐Ÿš€ ์ž‘์—… ๋‚ด์šฉ

  • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ input๋ฅ˜ ์ปดํฌ๋„ŒํŠธ(button, checkbox, text input)๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. onChange listener ๋“ฑ dom element์—์„œ ์‚ฌ์šฉํ•  ์š”์†Œ๋“ค์„ props๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด ์ผ๋ฐ˜ dom element์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ:

<Checkbox checked={autologinChecked}
  onChange={() => setAutoLoginChecked(!autologinChecked)}
  label='๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€'
/>
  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ป๋ฐ๊ธฐ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์•„์ง redux ์•ก์…˜ ๋””์ŠคํŒจ์น˜๋‚˜ auth request ๋“ฑ์€ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๊ณ , PCํ™”๋ฉด์—์„œ์˜ ์‚ฌ์šฉ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ์ฑ„๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„๊นŒ์ง€ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋œ ํ›„ merge๋˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • utils/index.ts์— limitInputNumber(e, limit)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. validity check ๋“ฑ ์‚ฌ์šฉ๋  ์—ฌ์ง€๊ฐ€ ๋งŽ์€ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ด๊ณณ์— ๋ชจ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
/**
 * input์—์„œ ์ตœ๋Œ€ ์ž…๋ ฅ๊ฐ€๋Šฅ ๊ธ€์ž ์ˆ˜ ์ œํ•œ
 * e.g. input์— onChange={e => { limitInputNumber(e, limit) } ์ถ”๊ฐ€
 *
 * @param {ChangeEvent<HTMLInputElement>} event
 * @param {int} limit
 */
export const limitInputNumber = (
  event: ChangeEvent<HTMLInputElement>, limit: number) => {
  const value = event.target.value;
  if (value.length > limit) {
    event.target.value = value.slice(0, limit);
  }
};
  • ๋ช‡๋ช‡ ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ž˜ @/components/ ํ•˜์œ„์— ์žˆ๋˜ Home๊ณผ ๊ฐ™์€ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ @/pages/๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. pages์— ๋Œ€ํ•œ alias๋„ @pages๋กœ ๋“ฑ๋กํ•ด๋†จ์œผ๋‹ˆ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • figma์— ์ •์˜๋œ ๋ช‡๊ฐ€์ง€ ์ƒ‰์ƒ์„ tailwind.config.js์— extends๋กœ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๋ฆฌ๋ทฐ ์ค‘์ ์‚ฌํ•ญ

  • tailwind css๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ์–ด๋Š์ƒŒ๊ฐ€ ํด๋ž˜์Šค๋ช…์œผ๋กœ ๋–ก์น ์ด ๋˜์–ด์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž˜ ์งœ๋ฉด ์ƒ๊ด€์ด ์—†๊ฒ ์ง€๋งŒ, ์ €๋ ‡๊ฒŒ ํด๋ž˜์Šค๋ช…์„ ๋งˆ๊ตฌ์žก์ด๋กœ ์ ์–ด๋†“์œผ๋‹ˆ ๋ณด๊ธฐ๋Š” ์•ˆ ์ข‹๋”๋ผ๊ณ ์š”. ์–ด๋–ป๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ์ข‹์„๊นŒ์š”? ์˜๊ฒฌ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! (์‚ฌ์‹ค ์ €๋Œ€๋กœ ๊ทธ๋ƒฅ ์จ๋„ ์ €๋Š” ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ธฐ์ค‘๋‹˜ ์˜๊ฒฌ์— ๋”ฐ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค)
  • PC ๋ทฐํฌํŠธ์— ๋Œ€ํ•œ ์ „๋žต๊ณผ ๋””์ž์ธ์ด ์–ด๋Š์ •๋„๋Š” ํ•„์š”ํ•œ ์‹œ์ ์ด ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €ํฌ๊ฐ€ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์ง€๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  1. ์ตœ๋Œ€ ๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•ด์„œ ํŠน์ • ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•œ ํ›„, ๋ชจ๋“  ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์„ ๋งŒ๋“ค๊ณ , ๊ทธ ํ›„์— ๋””์ž์ด๋„ˆ๋ถ„๋“ค๊ป˜ PCํ™”๋ฉด์˜ ๋””์ž์ธ ์š”์ฒญ
  2. ์ง€๊ธˆ๊นŒ์ง€ ๋””์ž์ธ๋œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ PCํ™”๋ฉด ๋””์ž์ธ ์š”์ฒญ

์–ด๋–ค ๊ฒƒ์ด ๋” ๋‚˜์„์ง€ ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜น์€ ๋” ์ข‹์€ ์˜๊ฒฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์ฝ”๋ฉ˜ํŠธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

cla6shade and others added 30 commits October 2, 2023 02:37
ํŽ˜์ด์ง€์— ๋ Œ๋”๋ง๋  content๋ฅผ ๋‹ด๋Š” ํŽ˜์ด์ง€ ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€
๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉํ•  ๋กœ๊ณ  ํŒŒ์ผ ์ถ”๊ฐ€
/login์™€ /register ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ๋ Œ๋”๋งํ•  ์ปดํฌ๋„ŒํŠธ ์ง€์ •
@pages๊ฐ€ /src/pages๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์„ค์ •.
๊ธ€์ž์ˆ˜ ์ œํ•œ์„ ๋‘ฌ์„œ input์˜ ๊ธ€์ž์ˆ˜๊ฐ€ ์ง€์ •๋œ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Input ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€. props ์ธ์ž๋กœ dom์˜ InputHTMLAttributes์ด ๊ฐ€์ง„ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
์Šต๊ด€์ ์œผ๋กœ ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์Šต๊ด€ ํ•ด๊ฒฐ
Figma์˜ ํ•œ๊ธ€ ๊ธฐ๋ณธ ํฐํŠธ๋ฅผ ์ ์šฉํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
Figma์— ์ •์˜๋œ ๋ช‡ ๊ฐ€์ง€ ์ƒ‰์ƒ๋“ค์„ extend์— ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€. onChange ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ, regex ๋“ฑ์„ Button.tsx์˜ props๋กœ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ button element์— ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
errorMessage๊ฐ€ props์— ํฌํ•จ๋˜์–ด dom element์˜ attribute๋กœ ์ „๋‹ฌ๋˜๋˜ ๋ฌธ์ œ์  ํ•ด๊ฒฐ
dom attribute์™ธ์˜ ์ธ์ž๊ฐ€ props์— ํฌํ•จ๋˜์–ด dom element์˜ attribute๋กœ ์ „๋‹ฌ๋˜๋˜ ๋ฌธ์ œ์  ํ•ด๊ฒฐ
ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ ์ „๋ฐ˜์„ ๋‹ด๋Š” PageContainer๊ฐ€ 400px์ด์ƒ ๋Š˜์–ด๋‚˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •
pcํ™”๋ฉด์„ ์ƒ๊ฐํ•˜๋ฉด ํŽ˜์ด์ง€ ์ „๋ฐ˜์„ ๋‹ด๋Š” PageContainer์˜ ๋ทฐํฌํŠธ๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค, PageContainer ํ•˜์œ„์— ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‘ฌ์„œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์„ ๊ฒƒ ๊ฐ™์Œ
Container์˜ parameter type์„ ์ •์˜ํ•œ ๋ชจ๋“ˆ ์ถ”๊ฐ€
PageContainer์˜ parameter์—์„œ Container.ts์— ์ •์˜๋œ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ •
๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์™€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” progress bar ์ถ”๊ฐ€
์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” tabReducer ์‚ญ์ œ. ํƒญ์€ router๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ž„.
@cla6shade cla6shade merged commit 92d1509 into main Oct 5, 2023
@cla6shade cla6shade deleted the develop/login-page branch October 5, 2023 15:36
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.

1 participant