CountButton과 Number 컴포넌트를 만들어봅시다.
여기서는 함수를 Props로 받는 CountButton과 state를 Props로 받는 Number 컴포넌트를 위한 파일을 만들겠습니다. 그리고 styled-components를 통해 간단하게 App 컴포넌트를 스타일링해봅시다.
import React, { Component } from "react";
import CountButton from "./components/CountButton";
import Number from "./components/Number";
import styled from "styled-components";
const Wrapper = styled.div`
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
width: 100px;
margin-top: 100px;
`;
const ButtonWrapper = styled.div`
width: 100%;
display: flex;
justify-content: space-between;
margin-bottom: 50px;
`;
class App extends Component {
state = {
number: 0
};
// 1. state를 업데이트하는 함수를 전달
countUp = () => {
this.setState(({ number }) => ({
number: number + 1
}));
};
// 2. setState 함수 앞에서 값을 받고 이를 전달
countDown = () => {
const { number } = this.state;
this.setState({ number: number - 1 });
};
render() {
// Destructing Assignment 문법을 사용한 방식
const { countUp, countDown } = this;
const { number } = this.state;
return (
<Wrapper>
<ButtonWrapper>
<button onClick={countUp}>+</button>
<button onClick={countDown}>-</button>
</ButtonWrapper>
{number}
</Wrapper>
);
}
}
export default App;
이 파일에서 styled-components를 활용해 Wrapper와 ButtonWrapper 컴포넌트를 만들어주었습니다. 그리고 CountButton 컴포넌트와 Number 컴포넌트를 만들어보겠습니다. 이 프로젝트에서는 styled-components를 사용하기 때문에 CSS 파일은 만들 필요가 없습니다. 디렉토리 구조는 아래와 같습니다.
CountButton, Number 폴더 내의 index.js 파일은 아래와 같은 코드를 입력해주세요.