-
< react > 컴포넌트를 이용한 간단한 react 응용react 2023. 10. 11. 17:21
이번 포스팅에는 앞서 공부한 리엑트 응용입니다.
Counter.js
import React from "react"; function Counter(){ return( <div> <h1>{number}</h1> <button onClick={plus}>+1 증가</button> <button onClick={minus}>-1 감소</button> </div> ); } export default Counter;
이 컴포넌트는 버튼 두 개를 생성해서 각 이벤트를 적용하여 카운터를 증감하도록 하는 컴포넌트이다.
실제 증가하는 카운터 변수는 부모 컴포넌트에 존재하고,이벤트도 부모에 존재한다.
단지 Ui 구성만 하고, 나머지는 props 를 통해 이벤트 등의 초기 정보를 주며
이벤트 이후 변경되는 상태값은 state이라는 내장 객체를 이용해서 가공한다.
대부분의 React 는 이러한 방식으로 구현되어진다.app.js
import logo from './logo.svg'; import './App.css'; //자바스크립트의 모듈화에 따른 문법 .각 모듈을 코드내로 import 시 사용. import Counter from './Counter'; function App() { return ( <div className="App"> <Counter> </Counter> </div> ); } export default App;
우선 app.js에 이렇게 작성한다.
다시 Counter.js 로 돌아가자.
Counter.js
userState() 내장함수 객체: 이 함수는 동적 데이터를 관리하도록 정의된 객체.
반드시 변환되는 값인 변수 (주로 객체) 에이 함수를 이용해서 필요 시 초기 값을 할당 받고,
setter 를 지정해서 이 setter 를 이용해 값을 가공해야한다.문법
const [상태 값 저장 변수, 상태 값 갱신 함수] = useState(상태 초기 값);
const plus = () => { setNumber(number+1); } const minus = () => { setNumber(number-1); }
plus , minus 함수를 람다로 정의 한다.
이때 useState 객체를 이용한 값 갱신 함수안에 값 저장변수를 호출해 알맞는 로직을 구성한다.
return( <div> <h1>{number}</h1> <button onClick={plus}>+1 증가</button> <button onClick={minus}>-1 감소</button> </div> );
리턴 구문에 상태 값 저장변수를 {} 를 씌어 h1 으로 출력하고
button 에 이벤트 onclick 을 정의한다 이때 안에 람다로 정의한 plus/minus 함수를 {} 를 씌어 호출한다.
이렇게 해서 완성된 코드는 아래와 같다.
import React, { useState } from "react"; function Counter(){ const [number, setNumber] = useState(0); const plus = () => { setNumber(number+1); } const minus = () => { setNumber(number-1); } return( <div> <h1>{number}</h1> <button onClick={plus}>+1 증가</button> <button onClick={minus}>-1 감소</button> </div> ); } export default Counter;
참고로 useState 를 정의하면 자동으로 import 에 붙는다 ( vs code 에만 붙는 건지는 잘 모르겠음.)
이렇게 작성 완료한 코드를 실행시키면
이렇게 잘 출력이 된다.
이제 이벤트가 정상적으로 실행되는지 확인해 보자.
plus/minus 람다함수에 arlet 추가했습니다. 증가가 잘되는 걸 확인했고 이제 감소가 잘 되는지 확인해보겠습니다.
이렇게 감소까지 잘되는 걸 확인했다.
이걸 이용해 게시물에 추천수 로직을 프론트에서 리엑트를 이용해 하면 편하고 좋을 거 같다.
'react' 카테고리의 다른 글
<React> 명령어 (2) 2024.03.05 <React> npx create-react-app 에러 (0) 2024.03.05 < react > backEnd 와 연결하기 (1) 2023.10.13 < react > 기초 다지기 (2) 2023.10.11