눈으로 읽는 것보다 직접 따라치면서 하다보면 내 머리 깊은 곳에 박힐거라는 믿음을 가지고 뚱땅뚱땅 키보드 두드리기 시작🤪
import React from 'react'; function Counter() { return ( <div> <h1>0</h1> <button>+1</button> <button>-1</button> </div> ); } export default Counter;
import React from 'react'; import Counter from './Counter'; function App() { return ( <Counter /> ); } export default App;
일단 위와같은 UI가 만들어짐을 확인!
이제는 Counter에서 버튼이 클릭되는 이벤트가 발생했을 때, 특정 함수가 호출되도록 설정해보자.
import React from 'react'; function Counter() { const onIncrease = () => { console.log('+1') } const onDecrease = () => { console.log('-1') } return ( <div> <h1>0</h1> <button onClick={onIncrease}+1</button> <button onClick={onDecrease}-1</button> </div> ); } export default Counter;
on이벤트이름={실행하고 싶은 함수}
형태 !
: component에서 동적인 값을 상태(state)라고 부른다. react에 useState
라는 함수가 있는데 이것을 사용하면 component에서 상태를 관리할 수 있다.
import React, { useState } from 'react';
⭐⭐⭐⭐useState 사용하려면 import 필수⭐⭐⭐⭐
const [number, setNumber] = useState(0);
✍️ useState
를 사용할 때는 상태의 기본값을 파라미터로 넣어서 호출한다. 이 함수를 호출하면 배열이 반환됨. 여기서 첫번째 원소는 현재 상태, 두번째 원소는 Setter 함수이다.
▪️ 원래는 아래처럼 해야함
const numberState = useState(0); const number = numberState[0]; const setNumber = numberState[1];
▪️ 배열 비구조화 할당(=구조 분해 할당)을 통해 각 원소를 추출해줌
const onIncrease = () => { setNumber(number + 1); } const onDecrease = () => { setNumber(number - 1); }
▪️ setter 함수는 파라미터로 전달 받은 값을 최신 상태로 설정해줌
<h1>{number}</h1>
-1
버튼을 누르면 0 이하로 계속 내려감..😭😭😭나는 0 이하로 내려가지 않게 만들고 싶단말야😭😭😭..
✔️ 0 이하로는 안내려가게 하는 코드
const onDecrease = () => { return number > 0 ? setNumber((prev) => prev - 1) : false; };