React

React 활용 예시(Handler02)

goshek 2024. 8. 28. 09:44
import React, { useState } from 'react'

// 자식 컴포넌트
// : 부모 컴포넌트에서 사용되며 부모로부터 count 값을 전달받아 UI로 출력
// >> p요소 내에 count 변수값을 작성
export function ChildComponent({ count }: { count: number }) {
  return (
    <p style={{ color: 'orange'}}>{count}</p>
  )
}

// 부모 컴포넌트
// : counter UI 작성
// >> 버튼 2가지를 생성하여 클릭 시 count 값이 변경
//   : 변경된 count값은 자식 컴포넌트에게 전달
export default function Handler02() {
  const [count, setCount] = useState<number>(0);

  return (
    <div>
      <hr />
      <button onClick={() => setCount(count + 1)}>증가</button>
      <button onClick={() => setCount(count - 1)}>감소</button>
      <ChildComponent count={count} />
    </div>
  )
}
 
 
import React from 'react'

// 이벤트 핸들러 - Props 전달

//! 이벤트 핸들러 prop의 이름 지정 방법
// : on- 시작
// >> on 다음에는 이벤트 설명 키워드 작성 (시작은 대문자)
// EX) onButtonClick, onIncrementClick, onInputChange

interface ButtonProps {
  children: React.ReactNode;
  onButtonClick: () => void; // 매개변수 X, 반환값X
}

// 자식 컴포넌트
function Button({ children, onButtonClick }: ButtonProps) {
  return (
    // onClick 이벤트 속성에
    // , 부모로부터 전달 받은 onButtonClick 함수 전달
    <button onClick={onButtonClick}>
      {children}
    </button>
  )
}

export default function Handler03() {
  const buttonHandler = () => {
    console.log('버튼 클릭');
  }
  return (
    <div>
      <Button onButtonClick={buttonHandler}>
        이벤트 핸들러(기능 전달)
      </Button>
      <hr />
      {/* 기본 동작 방지! */}
      <form onSubmit={(e) => {
        e.preventDefault();
        console.log('전송완료 - 기본동작은 방지');
      }}>
        <input type="text" />
        {/*
          onSubmit 핸들러의 경우 기본으로 데이터를 전송하고
            새로고침하는 기능을 가짐
        */}
        <button type='submit'>전송</button>
      </form>
    </div>
  )
}

'React' 카테고리의 다른 글

React 활용 예시(UseState02)  (0) 2024.08.28
React 활용 예시(useState)  (0) 2024.08.28
React 활용 예시(Handler01)  (0) 2024.08.28
React 활용 예시(Rendering02)  (0) 2024.08.27
React 활용 예시(Rendering01)  (0) 2024.08.27