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

[BB] 웹자판기 1주차 PR - 1 #10

Merged
merged 12 commits into from
May 11, 2022

Conversation

BB-choi
Copy link
Collaborator

@BB-choi BB-choi commented May 11, 2022

안녕하세요, 어텀!🙌 BB라고 합니다!
부족한 점이 많지만 2주동안 잘 부탁드립니다😉

데모페이지 🖥️

링크🖱️

capture_fe_vm

구현사항 ✔️

  • 초기 설정

    • create-react-app 이용하여 초기 설정
    • lint 설정
      • airbnb base
    • styled-component사용
      • style파일 분리하여 사용
      • 공통 스타일 theme 적용
    • react-router-dom 이용 라우팅
  • 화면구현

구현해야할 내용을 작은 단위로 나누어 개발하려고 노력하고있습니다!
작게 나눈 구현 사항을 issue로 등록하여 개발해보려고 하고있습니다.

useContextcustom Hook등 아직 잘 모르고, 공부가 필요한 부분이 많아서 디자인이나 화면 구현에 많은 시간을 할애하기 보다
화면을 먼저 만들어 두고 학습할 시간을 좀 더 확보하기 위해서
이번 PR에는 기능 구현 부분은 포함되지 않았고 화면 구현에 집중했습니다.🤓

아직 상태관리가 제대로 이루어지는 부분은 없어서 앞으로 미션을 진행하면서 얼마나 어려움에 부딪히게 될지... 걱정도 되지만 어텀의 도움을 받아서 열심히 달려가보겠습니다!

살짝 5시를 넘겨 제출한 점 죄송합니다😥
리뷰 잘 부탁드립니다!🙌

BB-choi and others added 7 commits May 10, 2022 17:14
* env: 초기 환경설정

- create-react-app 이용 초기 설정
- lint 설정
- styled-compoenet설정
- react-router-dom

commit e3c1259
Date:   Mon May 9 12:27:15 2022 +0900

    env: react-router-dom을 이용하여 Routing

commit 25f4d36
Date:   Mon May 9 11:55:49 2022 +0900

    fix: index.html 파비콘 관련 코드 삭제

    - manifest.json 삭제
    - favicon.ico 삭제

commit 06a0422
Date:   Mon May 9 11:53:48 2022 +0900

    env: react-router-dom 설치

commit 6fefb18
Date:   Mon May 9 11:42:47 2022 +0900

    env: CRA로 초기 설정

    - lint 설정 : airbnb base
    - styled-components 설치

* env: 절대경로 설정

* env: 디렉토리 구조 설정

* docs: 불필요한 md 삭제

* feat: NotFound 컴포넌트 구현

* fix: index path 수정

- path="/" 로 되어있던 Route 경로를 index로 수정

* refactor: Layout 디렉토리로 레이아웃 옮김

* design: 스타일 Reset 적용

* feat: 자판기, 지갑 컴포넌트 생성

* feat: 자판기 / 지갑 버튼 생성

* design: Reset, Normalize 적용

* fix: NavBar component 재활용 가능한 형태로 수정

* design: NavItem 스타일 적용

* feat: eslint-plugin-import 적용

- 절대경로로 jsx import시 external modules로 인식(internal로 안됨)
  - App.jsx에서 상대경로로 지정

* feat: 데이터 디렉토리 변경 및 상품 데이터 추가

* feat: 상품 목록 가져와 자판기 화면에 표시

* design: 상품 목록 style 적용

* feat: 금액 입력 input 추가

* fix: ProductButton style 중복 코드 삭제

* fix: productLi 아이템 간격 grid로 수정

* feat: 금액 투입 버튼 생성

* refacotor: NotFound 페이지 위치 변경

* feat: 진행사항 화면 구현

* feat: 지갑 화면 구현

* remove: 불필요한 주석 삭제
* fix: Styles 디렉토리명 변경

* refactor: Layout.jsx views로 이동

* design: 자판기 디자인에 색상 추가

* design: 자판기 금액 투입 영역 스타일 지정

* refactor: 디렉토리명 변경

-Styles to styles

* refactor: 컴포넌트로 페이지 하위 컴포넌트들 이동

* refactor: 디렉토리명 pages로 변경

- view 에서 pages로 변경
* refactor: pages 내부 styled component styled.js로 분리

* refactor: components/ 내부 styled component 파일 분리

* refactor: 공통 컴포넌트 components/common/ 으로 이동

* refactor: button 요소들 theme 이용하여 스타일 지정

* refactor: 테마에 지정한 스타일들 themeprovider로 적용
- InsertMoneyArea.jsx에서 상위 컴포넌트에서 넘겨준 값을 받지 않고 있던 것을 수정
@BB-choi BB-choi added the review-FE New feature or request label May 11, 2022
kowoohyuk pushed a commit that referenced this pull request May 11, 2022
* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치
BB-choi and others added 5 commits May 11, 2022 20:55
* fix: Nav 버튼 theme 적용하여 props로 전달

* design: theme에 fontweight, fontsize 추가

* fix: ProductItem theme적용하여 props 전달

* fix: returnButton theme 적용하여 props 전달

* fix: InsertButton theme 이용하여 props 전달

* fix: 지갑내 button에 theme 적용 및 theme fontsizes 적용

* remove: 불필요한 단위를 표준 단위로 설정하여 제거
- App.js와 menus.js에서 각각 string으로 관리되던 path를 한 군데에서 처리
Copy link

@deprecated-hongbiii deprecated-hongbiii left a comment

Choose a reason for hiding this comment

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

안녕하세요 비비, 리뷰를 맡은 어텀입니다!
프로젝트 구조도 잘 잡으신 것 같고 스타일 파일에 styled.js 라고 붙여주니까 스타일 파일인 게 드러나서 좋네요.
이번 프로젝트도 화이팅!! 💪

바로 머지할게요 :)

]
},
"devDependencies": {
"eslint-config-airbnb": "^19.0.4",

Choose a reason for hiding this comment

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

eslint 적용 👍

"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",

Choose a reason for hiding this comment

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

CRA로 생성한 프로젝트에서 eject를 하면 어떤 일이 일어나는지 찾아보시는 것도 재미있을 것 같아요. ㅎㅎㅎ

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

이 부분은 CRA로 프로젝트를 생성하면 자동으로 생성되는 script여서 아무 생각 없이 넘겨버렸던(😭) 부분이었는데요,
어텀이 생각할 거리를 던져주신 덕분에 한 번 찾아보고 공부해 보는 시간이 되었습니다!!
eject를 하면 어떤일이 생기는지 한 번 문서로 알아보고,
관련 포스팅등을 읽어보며 공부해 보았습니다!
감사합니다🙌

Comment on lines +1 to +5
const NotFound = () => {
return <div>올바른 경로를 입력하세요.</div>;
};

export default NotFound;

Choose a reason for hiding this comment

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

오호 잘못된 url로 접근했을 때 에러처리를 위한 컴포넌트인가요? 넘 좋습니다 👍

src/App.jsx Outdated
Comment on lines 22 to 25
<Route path="/" element={<Layout menusData={menus} />}>
<Route path="/" element={<VendingMachine />} />
<Route path="/wallet" element={<Wallet />} />
</Route>

Choose a reason for hiding this comment

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

path가 '/' 인 경우에 VendingMachine 컴포넌트를 렌더링하고 싶으셨던 것 맞을까요?
Index Routes라는 것을 활용해볼 수 있을 것 같아요! 공식문서 링크 함께 첨부해드릴게요.
https://reactrouter.com/docs/en/v6/getting-started/overview#index-routes

또한 '/wallet'에 쓰인 / 는 생략해도 될 것 같습니당 (공식문서에 예제가 다 생략되어 표기돼있네요!)

Copy link
Collaborator Author

@BB-choi BB-choi May 12, 2022

Choose a reason for hiding this comment

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

와! 저도 사용하면서 살짝 찝찝했던 부분이었어요!😂 알려주셔서 감사합니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

어텀의 리뷰를 확인하기 전에 생각해보다,

mockData/menus.js에서 아래와 같은 형식의 메뉴 데이터를 받아와서

{
    id: 0,
    menuName: "자판기",
    path: "/",
  },

네비게이션의 링크를 위 데이터의 path로부터 연결하고 있어서,
Router에서도 위 데이터의 path로 연결해야

menus데이터에 변경이 있을때에 Router와 NavBar 모두에 적용될 것 같아서

const [indexPage, walletPage] = menus;

// 생략

<Route path={indexPage.path} element={<Layout menusData={menus} />}>
    <Route path={indexPage.path} element={<VendingMachine />} />
    <Route path={walletPage.path} element={<Wallet />} />
</Route>

이런식으로 수정해봤는데, 괜찮은 방법일까요?🤔

Choose a reason for hiding this comment

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

넵넵 크게 어색하지는 않은 것 같아요!

다른 방법으로는, 저희 팀에서는 클라이언트 url은 별도의 파일로 분리하여 관리하고 있어요!
아래와 같이 작성해볼 수 있습니당

// constants/url.js

const URLS = {
  HOME: '/',
  WALLET: '/wallet',
}

export default URLS;

Comment on lines +3 to +9
const Menus = ({ data }) => {
return data.map((item) => <NavItem menuItem={item} key={item.id} />);
};

const Navbar = ({ menusData }) => {
return <Menus data={menusData} />;
};

Choose a reason for hiding this comment

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

이 부분은 왜 레이어를 한 번 더 나누셨는지 궁금하네용 ㅎㅎ
Navbar 컴포넌트에서 바로 menusData.map~~ 해도 될 것 같은데 나누신 이유가 궁금해요!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

처음 이 부분을 작성할 때 살작 복잡해 보일 것을 예상해서
일단 분리해보고, 필요없으면 다시 합치자는 생각으로 분리해봤었어요!

그런데 지금 확인해보니 어텀 말씀대로 더 복잡도가 높아진 것 같아서(일단 만들고나서, 고쳐보자 하는 습관을 고쳐야 하는데.. 잘 안되네요! 자꾸 이렇게 놓치는 부분이 생기는데😭)

Navbar 컴포넌트를

{menusData.map((item) => (
    <NavItem menuItem={item} key={item.id} />
))}

이렇게 변경해 보았습니다!

Choose a reason for hiding this comment

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

계속 고민만 하다가 아무것도 못하는 것보다는 일단 만들고 계속해서 고쳐나가는 것이 완성도도 높고 동기부여도 잘 되는 것 같아요!
잘 하고 계시니 걱정하지 않으셔도 됩니당 ㅎㅎㅎ 😄

Comment on lines 12 to 14
<Link to={path}>
<Button styles={navButtonStyle} data={{ name: menuName }} />
</Link>

Choose a reason for hiding this comment

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

개인적인 의견이니 참고만 해주세요!

링크가 현재 NavItem에 걸려있는데요,
개인적으로는 Navbar 메뉴가 자판기, 지갑 두개밖에 없어서 공식문서의 예제처럼 그냥 Navbar 안에 같이 써주는 게 한눈에 보기 편하지 않을까 싶어요!

image

https://reactrouter.com/docs/en/v6/getting-started/overview#navigation

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

이 부분은 어떻게 할까 고민이 되기도 했는데요,
mockData/menus.js 에서 읽어 들여서 nav와 라우터를 구성한다는 생각으로 (앞으로 메뉴가 추가된다면..? 이라는 가정 하에) 작성(위 코멘트포함)하여 이런 형태가 되었습니다.

확실히 <nav>를 쉽게 파악하기에는 어텀이 말씀해주신 형태가 훨씬 더 좋다고 생각됩니다!
실제로 현재 메뉴는 2가지 밖에 없기도 하구요!

어떤 방식을 취하면 좋을지 더 고민해보도록 하겠습니다!🙌


import { productButtonStyle, ProductLi } from "./ProductItem.styled";

const ProductItem = ({ productsData }) => {

Choose a reason for hiding this comment

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

ProductItem 상품 하나를 가리키는 것처럼 느껴져서 Products 라고 하면 어떨지 제안드려봅니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

아래남겨주신 코멘트까지 고려해서 변경해보겠습니다!👍

Comment on lines +10 to +12
<ProductUl>
<ProductItem productsData={productsData} />
</ProductUl>

Choose a reason for hiding this comment

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

이렇게 쓰이는 거라면 map을 여기서 사용해서 ProductItem을 렌더링하는 게 더 적절할 것 같아요!

Suggested change
<ProductUl>
<ProductItem productsData={productsData} />
</ProductUl>
<ProductUl>
{productsData.map(product => <ProductItem productData={product} />)}
</ProductUl>

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

아래와 같이 변경해 보았습니다!

const ProductItem = ({ productData }) => {
  return (
    <ProductLi>
      <Button
        data={productData}
        styles={productButtonStyle}
        className="product-button"
      />
      <p className="product-price">{productData.price}</p>
    </ProductLi>
  );
};

훨씬 ProductItem이라는 이름에 맞고 알기 쉬운 코드가 된 것 같아요!
감사합니다!🥳

@deprecated-hongbiii deprecated-hongbiii merged commit 386ccab into codesquad-members-2022:BB May 11, 2022
@BB-choi
Copy link
Collaborator Author

BB-choi commented May 12, 2022

안녕하세요 어텀!! 🤗
정성스럽고 꼼꼼하게 리뷰해주셔서 너무 감사드려요!

이번 주는 제대로 집중이 안되고 의욕이 떨어지는 시간을 보내고 있는 BB입니다..😭
이게 번아웃일까? 라는 생각도 들기도 하는데 번🔥이라고 할 정도로 엄청 달렸나? 하기에도 아닌것 같기도 하고요...ㅎㅎ

이런 상황이라 나름 신경써서 코드를 작성하는데도
제가 보기에도 이 부분은 이상한데? 싶은 부분이 자꾸 생기는 것 같습니당..💦
그럼에도 불구하고 코드를 세심하게 확인해 주셔서 너무 감사드려요!
코드에 대해 피드백을 받고 개선한 뒤, 한결 깔끔해 진 코드를 보면 기분이 그렇게 좋을수가 없습니다😊

잘 하고자 하는 욕심이 저를 힘들게 하는건 아닐까 하는 생각이 들어서
이번 과제는 좀 힘을 빼고 할 수 있는 데 까지만 해보자~라는 생각으로 조금 느리더라도 조금씩 진행해보려고 합니다🐢
남은기간도 잘 부탁드리겠습니다!

@deprecated-hongbiii
Copy link

ㅠㅠ 비비 힘든 시간을 보내고 계셨군요
이럴 땐 노트북 잠시 덮어두고 다른 활동 하면서 리프레쉬 하는 것도 큰 도움이 되더라구요!
프로젝트에 너무 부담 가지지 마시궁 ㅎㅎㅎ 페이스 조절 화이팅!! 💪

deprecated-hongbiii pushed a commit that referenced this pull request May 14, 2022
kowoohyuk pushed a commit that referenced this pull request May 14, 2022
* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치

* Display Mode(dark/light) (#13)

* [DOTORI] 1주차 첫번째 PR (#25)

* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치

* feat: useDisplay 커스텀 훅 생성

* feat: AppLayout, ToggleDisplay Component 구현

* feat: DisplayProvider 구현

displayMode를 전역 상태로 관리한다.

* design: title font 변경, change outlet title 대문자로 변경

* PR1 Refactoring (#16)

* refactor: components 디렉토리 구조 변경

* feat: common components - Nav 구현

* refactor: 라우터 모듈 분리

* refactor: 사용하지 않는 styled-components 제거, div->span, strong 태그 변경

* refactor: CoinContainer, VendProductContainer Component 분리

* Wallet Component - 동전 투입 기능 (#17)

* feat: 금액 버튼 클릭시 해당 금액 개수 감소 렌더링

useCoin 커스텀 훅 사용

* feat: 금액 버튼 클릭시 잔고 금액 감소 렌더링

useBalance 커스텀 훅 사용

* feat: CoinProvider 생성

outlet 상위 컴포넌트에 생성하여 라우팅에 따른 상태 초기화 방지

* feat: InsertCoinProvider 구현

지갑에서 선택한 금액을 자판기에 투입된 금액으로 렌더링

* rename: components 디렉토리 구조 수정

* remove: merge로 생성된 중복 파일 제거

* rename: 컴포넌트 디렉토리명 대문자로 변경

* refactor: balance state 제거, useBalance삭제

coin state로 연산할 수 있는 balance state를 제거
hayoung123 added a commit that referenced this pull request May 15, 2022
* 1주차 수 PR 리뷰 반영 (#10)

* Rename: Layout과 관련된 폴더 생성 및 파일 이름 변경
Related to: #9

* Design: props를 distructuring 하도록 수정
Related to: #9

* Style: ProductContainer 컴포넌트 내부의 변수명 변경
- 구체적인 이름으로 변경
Close: #9

Co-authored-by: kyle <[email protected]>

* Story1 관련 기능 구현 (#15)

* Refactor: Router dom과 관련된 컴포넌트 분리

* Style: 변수명 변경

* Feat: 지갑의 금액버튼을 누르면 총금액이 감소하는 기능 구현
- context API와 useReducer 사용
- Wallet 컴포넌트에서 Money 컴포넌트 파일 분리
- 총금액을 구하는 유틸함수 생성
Related to: #11

* Feat: 자판기에 지갑에서 투입된 금액을 보여주도록 추가
- mock data 추가
- insertMoney 시 insertMoneyData가 업데이트 되도록 함
Related to: #11

* Refactor: Input과 관련된 컴포넌트 분리

* Refactor: moneyContext 개선
- insertMoneyData를 누적해서 더하는 방식으로 변경
- insertMoney의 변수명을 buttonInsertMoney으로 변경
Related to: #11

* Feat: 자판기 input에서 금액 투입 구현
- OrderContainer 컴포넌트 내부에 있던 useState를 context로 이동
- 투입 버튼 클릭시 자동보정되는 기능 추가
- 지갑의 돈이 큰 단위부터 소모되도록 구현
Related to: #11

* Feat: 투입된 금액 만족시 구매 버튼 활성화 기능 구현
- 품절된 상품이거나 투입된 금액 보다 높은 가격의 상품의 구매버튼 비활성화
Related to: #12

* Style: 중복되는 부분을 변수로 할당, 주석 추가

* Style: 변수명 변경
- count -> unit

Co-authored-by: kyle <[email protected]>
kowoohyuk pushed a commit that referenced this pull request May 19, 2022
* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치

* Display Mode(dark/light) (#13)

* [DOTORI] 1주차 첫번째 PR (#25)

* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치

* feat: useDisplay 커스텀 훅 생성

* feat: AppLayout, ToggleDisplay Component 구현

* feat: DisplayProvider 구현

displayMode를 전역 상태로 관리한다.

* design: title font 변경, change outlet title 대문자로 변경

* PR1 Refactoring (#16)

* refactor: components 디렉토리 구조 변경

* feat: common components - Nav 구현

* refactor: 라우터 모듈 분리

* refactor: 사용하지 않는 styled-components 제거, div->span, strong 태그 변경

* refactor: CoinContainer, VendProductContainer Component 분리

* Wallet Component - 동전 투입 기능 (#17)

* feat: 금액 버튼 클릭시 해당 금액 개수 감소 렌더링

useCoin 커스텀 훅 사용

* feat: 금액 버튼 클릭시 잔고 금액 감소 렌더링

useBalance 커스텀 훅 사용

* feat: CoinProvider 생성

outlet 상위 컴포넌트에 생성하여 라우팅에 따른 상태 초기화 방지

* feat: InsertCoinProvider 구현

지갑에서 선택한 금액을 자판기에 투입된 금액으로 렌더링

* rename: components 디렉토리 구조 수정

* remove: merge로 생성된 중복 파일 제거

* rename: 컴포넌트 디렉토리명 대문자로 변경

* refactor: balance state 제거, useBalance삭제

coin state로 연산할 수 있는 balance state를 제거

* PR2 Refactoring (#21)

* refactor: setCoin 로직 변경

배열의 카피본에서 같은 값을 갖는 인덱스 요소의 객체를 변경 -> map 사용

* refactor: grid repeat 함수 적용

* refactor: Coin Component useMemo 적용, setProvider 분리

Coin Component 클릭시 금액의 변동사항이 있는 컴포넌트만 리렌더링 된다.

* feat: 지갑에서 금액을 투입하면 알림 문구가 뜬다. (#23)

useReducer 적용
kowoohyuk pushed a commit that referenced this pull request May 21, 2022
* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치

* Display Mode(dark/light) (#13)

* [DOTORI] 1주차 첫번째 PR (#25)

* chore: 프로젝트 초기 셋팅 (#2)

* feat:VendingMachine, Wallet 라우팅 (#5)

* Wallet Component - Markup (#6)

* update: money data

* design: Coin Component

* design: Balance Component

* design: Wallet Component

* VendingMachine Component - Markup (#9)

* update: product data

* design: VendProduct Component

* design: VendController Component

* design: HistoryBox Component

* design: VendingMachine Component

* design: ChangeOutlet Component

* design: InsertCoin Component

* refactor: VendController Component의 하위컴포넌트 분리

* chore: update yarn.lock

* Common Components 분리(1) (#10)

* feat: Button Component 구현

* feat: InsertCoin, BrandLabel, Unit에 Button Component 적용

* chore: polished 라이브러리 설치

* refactor: Nav를 NavLink 적용하여 리팩토링

* chore: gh-pages 라이브러리 설치

* feat: useDisplay 커스텀 훅 생성

* feat: AppLayout, ToggleDisplay Component 구현

* feat: DisplayProvider 구현

displayMode를 전역 상태로 관리한다.

* design: title font 변경, change outlet title 대문자로 변경

* PR1 Refactoring (#16)

* refactor: components 디렉토리 구조 변경

* feat: common components - Nav 구현

* refactor: 라우터 모듈 분리

* refactor: 사용하지 않는 styled-components 제거, div->span, strong 태그 변경

* refactor: CoinContainer, VendProductContainer Component 분리

* Wallet Component - 동전 투입 기능 (#17)

* feat: 금액 버튼 클릭시 해당 금액 개수 감소 렌더링

useCoin 커스텀 훅 사용

* feat: 금액 버튼 클릭시 잔고 금액 감소 렌더링

useBalance 커스텀 훅 사용

* feat: CoinProvider 생성

outlet 상위 컴포넌트에 생성하여 라우팅에 따른 상태 초기화 방지

* feat: InsertCoinProvider 구현

지갑에서 선택한 금액을 자판기에 투입된 금액으로 렌더링

* rename: components 디렉토리 구조 수정

* remove: merge로 생성된 중복 파일 제거

* rename: 컴포넌트 디렉토리명 대문자로 변경

* refactor: balance state 제거, useBalance삭제

coin state로 연산할 수 있는 balance state를 제거

* PR2 Refactoring (#21)

* refactor: setCoin 로직 변경

배열의 카피본에서 같은 값을 갖는 인덱스 요소의 객체를 변경 -> map 사용

* refactor: grid repeat 함수 적용

* refactor: Coin Component useMemo 적용, setProvider 분리

Coin Component 클릭시 금액의 변동사항이 있는 컴포넌트만 리렌더링 된다.

* feat: 지갑에서 금액을 투입하면 알림 문구가 뜬다. (#23)

useReducer 적용

* 자판기 - 금액 투입, 상품 선택기능  (#25)

* feat: 지갑에서 금액을 투입하면 알림 문구가 뜬다.

useReducer 적용

* feat: 자판기에 투입된 금액 자동보정 기능 구현

* design: historyBox list margin, 자판기 margin-top

* feat: 자판기에서 금액을 투입하면 알림 문구가 뜬다.

* refactor: 투입 금액 보정 함수 수정

재귀함수로 리팩토링

* feat: 자판기 투입 최소, 최대 금액 설정

0원이면 early return, 잔고보다 큰 금액이면 잔고를 return

* feat: 최대금액 입력시 지갑 잔고 관리

잔고와 동전의 개수는 0으로 초기화된다.

* feat: history provider 분리로 렌더링 최적화

* feat: SelectButton 구현

inputCoin과 stocked에 따라 선택 가능한 상품에 초록불을 렌더한다.

* feat: 선택 가능한 상품을 누를 때 상품명, 잔돈 알림 문구 구현

* feat: 돈을 투입하고 5초간 입력이 없으면 잔돈 자동반환

* feat: 투입금액이 추가 발생하면 타이머 초기화

디바운싱을 이용하여 타이머를 초기화한다.

* rename: setTimer -> setDebounce

* 자판기 - 상품 선택 기능(2) (#26)

* feat: 지갑에서 금액을 투입하면 알림 문구가 뜬다.

useReducer 적용

* feat: 자판기에 투입된 금액 자동보정 기능 구현

* design: historyBox list margin, 자판기 margin-top

* feat: 자판기에서 금액을 투입하면 알림 문구가 뜬다.

* refactor: 투입 금액 보정 함수 수정

재귀함수로 리팩토링

* feat: 자판기 투입 최소, 최대 금액 설정

0원이면 early return, 잔고보다 큰 금액이면 잔고를 return

* feat: 최대금액 입력시 지갑 잔고 관리

잔고와 동전의 개수는 0으로 초기화된다.

* feat: history provider 분리로 렌더링 최적화

* feat: SelectButton 구현

inputCoin과 stocked에 따라 선택 가능한 상품에 초록불을 렌더한다.

* feat: 선택 가능한 상품을 누를 때 상품명, 잔돈 알림 문구 구현

* feat: 돈을 투입하고 5초간 입력이 없으면 잔돈 자동반환

* feat: 투입금액이 추가 발생하면 타이머 초기화

디바운싱을 이용하여 타이머를 초기화한다.

* rename: setTimer -> setDebounce

* remove: vendProductOutlet Component 삭제

* refactor: 투입 금액 보정 로직 변경

잔고가 있는 돈의 배열을 재귀로 돌면서 투입금액에 가까이 누적시킨다.

* feat: 지갑과 자판기에서 금액을 투입하면 선택 시간 3초 초기화

provider에서 useEffect를 사용하여 wallet, vm 컴포넌트에서 insertCoin의 sideEffect를 감지

* refactor: 화살표 함수 컨벤션 통일

* refactor: 중복 코드를 하나의 객체로 변경

* refactor: styled component 분리
ink-0 pushed a commit that referenced this pull request May 21, 2022
* 🍱 텅 이미지 크기 수정

* 🎨 데이터 구조 수정

* ✨ tab 기능 추가

- 일단 임시 공간만 둠
- 데이터 구조도 수정

* ✨ get vminfo api 추가

* ♻️ 컴포넌트 위치 데이터 변경

- 몇몇 이름도 같이 소소한 것 수정

* ♻️ provider 리팩토링
amorfati0310 pushed a commit that referenced this pull request May 23, 2022
* Test: 불필요한 주석 삭제

* Refactor:  useVMTimer 로직 VMTimerProvider로 합치기

issue #13

* Refactor:  prop-types 에 object type구체화하기

issue #13

* Refactor:  contexts로 폴더명 수정

issue #13

* Design: ProductArea에 버튼 클릭 막는 효과 수정

* Feat: 반환 버튼 클릭 시, 즉시 반환 기능 구현

issue #8

* Feat: 히스토리 젤 하단으로 자동 스크롤 기능 구현

closed issue #14

* Refactor: util에서 delay 함수 삭제

* Design: 지갑 layout 완성

closed issue #10

* Feat: 돈 클릭 시, 수량 감소 이벤트 구현

issue #15

* Feat: 상품 클릭 후 2초동안 재상품 선택 및 투입, 반환 막기

closed issue #16

* Refactor: FinalProvider App으로 이동

* Feat: 지갑에서 돈 선택 시, 히스토리 추가 및 반환 타이머 기능 구현

issue #13

* Fix: 남은 금액이 0원일 때 초기화

closed issue #17

* Feat: useWalletState 생성

* Feat: 금액 입력 시 지갑에 수량 감소하는 기능 구현

issue #8

* Docs: README 작성

* Docs: README 수정

오타 및 비디오 수정

* Refactor: useWalletState 삭제

walletContext로 합쳐서 사용

* Refactor: useHistory 삭제

HistoryContext로 합쳐서 사용

* Refactor: calcPaymentToBeUsed 함수 util에서 삭제

- WalletProvider로 이동

* Rename: util에서 helper로 변경

* Refactor: App에 provider 하나로 reduce

* Rename: useVMState jsx 파일로 변경

* Docs: README 수정

- 디렉토리 변경 반영
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-FE New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants