-
Notifications
You must be signed in to change notification settings - Fork 165
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
[1단계 - 페이먼츠] - 버건디(전태헌) 미션 제출합니다. #343
Changes from 4 commits
eac1107
a2eaf72
bcd9c7d
cded571
6dcf8e2
b5f8195
7173e07
4552764
2ea7df5
3b17e49
7f0e7d1
152e9be
f3b9ee0
ac06ece
17fabd6
3f86c2a
4c06f2f
b323507
11aeaf6
2185961
8bd4982
c843b8a
76a8058
fecb622
a9f5148
f60738d
10a9308
420baad
c1d5ea5
208b14d
3f03f3a
422de20
1c7a8f9
394d204
456e349
edf45ea
a1ff303
10f0b0c
f9ae286
b63c30a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"singleQuote": true, | ||
"semi": true, | ||
"useTabs": false, | ||
"tabWidth": 2, | ||
"trailingComma": "all", | ||
"printWidth": 100, | ||
"bracketSpacing": true, | ||
"arrowParens": "always", | ||
"endOfLine": "auto" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,25 @@ | ||
# react-payments | ||
# 💳 페이먼츠 | ||
|
||
페이먼츠 사용자의 카드 정보를 입력하고 해당 카드를 어플리케이션에 등록한다. | ||
|
||
### 카드 번호 입력 및 식별 | ||
|
||
- 사용자가 입력하는 카드 번호를 실시간으로 파악하여, Visa나 MasterCard에 해당하면 해당 브랜드의 로고를 UI에 표시한다. | ||
- 입력은 숫자만 가능하며, 유효하지 않은 번호 입력 시 피드백을 제공한다. | ||
|
||
### 카드 유효기간 입력 | ||
|
||
- 월과 년도를 범위 내에서만 입력할 수 있어야 하며, 입력 제한을 두어 사용자가 숫자만 입력할 수 있도록 한다. | ||
|
||
### 카드 소유자 이름 입력 | ||
|
||
- 영문자 대문자만 입력 가능한 폼을 구현한다. | ||
|
||
### 실시간 프리뷰 업데이트 | ||
|
||
- 사용자의 카드 정보 입력에 따라 카드 프리뷰를 동시에 업데이트한다. | ||
|
||
### ⚠️ 주의 사항 | ||
|
||
- 사용자의 입력 input에 포커스를 자동으로 이동하는 부분을 1단계에서 고려하지 않는다. **'기능' 자체에 집중해서 구현**한다. 만약 리뷰어가 사용자 경험 측면에서 피드백을 준다면, 피드백을 반영하는 시점에서 사용자 경험도 함께 고려하여 개선한다. | ||
- 기본적인 기능 요구사항을 만족하지 못한 코드는 코드 리뷰 대상이 아니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import styled from 'styled-components'; | ||
|
||
type InputProps = { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 commentThe reason will be displayed to describe this comment to others. Learn more. 오호 아뇨 생각해보지 못한 부분입니다! 짚어주셔서 감사합니다 하루 🙇 한번 적용시켜보겠습니다~! |
||
value: string; | ||
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void; | ||
type: 'text' | 'number' | 'email' | 'password'; | ||
placeholder: string; | ||
id: string; | ||
}; | ||
|
||
const StyledInput = styled.input` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 commentThe reason will be displayed to describe this comment to others. Learn more. 앗 처음에 아마 이렇게 작성하고 컨벤션을 놓친 컴포넌트들이 많을거 같은데요..! 한번 검토해보면서 수정해보겠습니다! 짚어주셔서 감사해요 하루~! |
||
border: 1px solid rgba(172, 172, 172, 1); | ||
padding: 8px; | ||
font-size: 0.6875rem; | ||
border-radius: 2px; | ||
height: 32px; | ||
`; | ||
|
||
export default function Input({ value, onChange, type, placeholder, id }: InputProps) { | ||
return ( | ||
<StyledInput value={value} onChange={onChange} type={type} placeholder={placeholder} id={id} /> | ||
); | ||
} |
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.
여러 후보 중 버건디가
styled-components
를 선택해주신 이유가 궁금합니다 :)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.
일단 저 같은 경우는
styled-components
를 사용해본적이 없습니다!지금까지
css modules
나vanilla extract
를 사용해왔는데요!배우는 과정에서 단순히 익숙하지 않다는 이유로 새로운 스택을 시도해보지 않는건 회피 밖에 안되겠다.
라고 생각이 들었어요!만약 얼른 배포를 해야하는 상황이고, 여러가지 현실적인 문제가 있다면 익숙한 기술을 채택해야겠지만..
이번에는 페어와 함께하다보니 페어를 믿고 진행해보았습니다!
페어 같은 경우는
styled-components
를 사용해본 경험이 있다고 해서, 이번에 미션 진행해보면서 배울겸, 그리고 한번 겪어볼겸 시도해보았습니다!근데 이번에 이
styled-components
를 사용하면서, 장점보다는 단점이 더 많다고 저는 느껴졌어요.1. 컴포넌트 레이아웃과 스타일링이 한곳에서 작성 된다.
이부분 같은 경우 따로 스타일 파일로 분리해서 관리를 해줄수도 있겠지만, 결국
스타일링을 적용한 컴포넌트 그 자체
로 사용을 해주어야 하다보니 그냥 한 컴포넌트에서 작성하는 것이 최선이다라고 판단했습니다.근데 전 스타일과 레이아웃이 아예 분리되는 걸 더 선호하는것 같아요.. 🥲 (css 파일로 따로 만들어서 className으로 주입해주는 것)
2. 높은 재사용성을 보장받을 수 없고, 가독성이 떨어진다.
이는 익숙하지 않아서 그런거일수도 있지만, 스타일 재사용성이 그렇게 높지 않다고 느꼈습니다.
가령 한 2~3개의 동일한 속성을 가진 스타일링 컴포넌트가 있다고 가정하고 이를 재사용해주고 싶다고 한다면,
재사용을 위해 스타일 컴포넌트 명이 애매모호 해질수 밖에 없겠다고 생각했습니다.
결국 명확한 컴포넌트 명을 위해 동일한 속성이더라도, 각각의 스타일 컴포넌트로 만들어주어야하지 않나? 라는 의구심이 들었어요!
또 결국 UI 구분을 위한 컴포넌트를 만드는데, 스타일링을 위한 컴포넌트를 또 만든다는것 자체가 아직 와닿지는 않네요..!
3. 런타임시 스타일 적용
styled-component
같은 경우 런타임시에 css를 만들어서 적용시켜주는 거로 알고 있는데요..!이럴때 무거운 애니메이션 같은 작업이 있을 경우 성능 문제가 발생할수 있다고 알고 있습니다.
그래서 이러한 문제점을 해결 하기 위해서 나온것이 제로 런타임인
vanilla-extract
나panda-css
로 알고 있어요!그렇다면 자연스럽게 저런 제로 런타임 스타일링 기술들로 생태계 흐름이 변화하지 않을까? 라는 생각이 들어요!
하지만 이번에 페어 덕분에 그래도 수월하게 새로운 기술을 접해보았다는 것이 좋았던 점입니다.
하루의
styled-components
에 대한 의견 한번 여쭤보고 싶어요!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.
이것은 이번에 스타일 파일을 분리해주셔서 해결이 된 것 같군요 :)
FlexCenter
Caption
과 같은 유틸 성격의 컴포넌트를 작성해두고 재사용해볼 수는 있을 것 같아요.저도 버건디의 의견에 동의합니다. panda-css 는 저도 처음들어보는데 엄청 귀여운 이름이네요 🐼 사실 저는
CSS-in-JS
를 사용했을 경우 DX가 더 좋았다고 느꼈어요. 그렇지만 앞으로 새로운 프로젝트를 한다면 비슷한 이유로 vanilla-extract 나 sass 를 선택할 것 같습니다 :)