옝옹
냠
옝옹
전체 방문자
오늘
어제
  • 분류 전체보기 (84)
    • [LG유플러스]유레카 SW (5)
    • React (20)
    • JS (17)
    • TypeScript (5)
    • CSS & HTML (1)
    • 알고리즘 (11)
    • JAVA (20)
    • GIT (1)
    • 자격증 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • useRef
  • match()
  • useState
  • join()
  • java
  • switch문
  • 자바
  • template literal
  • TypeScript
  • 자바스트립트
  • 변수선언
  • 자바스크립트
  • map() 함수
  • 노마드코더
  • 정적멤버
  • Node.js
  • JavaScript
  • sort() 메서드
  • While문
  • 기본api클래스
  • ==
  • java.lang패키지
  • toFixed
  • 백준
  • 인스턴스멤버
  • 타입스크립트
  • 혼자공부하는자바
  • 타입변환
  • join() 메서드
  • java.util패키지
  • 접근제한자
  • 혼자 공부하는 자바
  • do-while문
  • useCallback
  • 화살표함수
  • reverse() 메서드
  • 코드스플리팅
  • continue문
  • indexOf()
  • break문
  • map
  • useMemo
  • 함수선언
  • fillter
  • reduce
  • 리액트를다루는기술
  • 리액트
  • useEffect
  • js
  • 템플릿리터럴

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
옝옹

냠

[React] 이벤트 핸들링
React

[React] 이벤트 핸들링

2023. 3. 16. 15:11

이벤트 핸들링

  • 대표적으로 클릭, 키보드 입력 등 사용자의 어떤 행위를 처리하는 것

이벤트를 사용할 때 주의 사항

  1. 이벤트 이름은 카멜 표기법을 작성 (ex : onClick, onKeyUp)
  2. 이벤트에 실행할 자바스크립트를 전달하는 것이 아닌 함수 형태의 값 전달
  3. DOM 요소에만 이벤트를 설정 (DOM 요소 : div, button, input, span 등)

React에서 이벤트 핸들링하기

  • onChange 이벤트 설정
<input
	type = "text"
    name = "message"
    placeholder = "아무거나 입력해 보세요"
    onChanage = {
        (e) => {
            console.log(e.target.value); <!-- 앞으로 변할 인풋값을 콘솔에 기록 -->
        }
    }
/>
  • state에 input 값 담기
class EventPractice extends Component {
    state = {
        message : "" 
    } // 초기값 설정

    render() {
        return (
            <div>
                <input
                    type = "text"
                    name = "message"
                    placeholder = "아무거나 입력해 보세요"
                    value = {this.state.message}
                    onChanage = {
                        (e) => {
                            this.setState({
                                message : e.target.value 
                            }) <!-- state 업데이트 -->
                        }
                    }
                />
            </div>
       )
    }
}
  • 임의 메서드 만들기
    • 미리 함수를 준비하여 전달
      • 가독성이 높음
import {Component} from 'react';

class EventPractice extends Component {
    state = {
        message: ''
    }

    handleChange = (e) => {
        this.setState({
            message: e.target.value
        });
    }

    handleClick = () => {
        alert(this.state.message);
        this.setState({
            message: ''
        })
    }

    render() {
        return(
            <div>
                <input
                    type='text'
                    name='message'
                    placeholder='아무거나 입력해 보세요'
                    value={this.state.message}
                    onChange={this.handleChange}
                />
                <button onClick={this.handleClick}>확인</button>
            </div>
        );
    }
}

export default EventPractice;

함수 컴포넌트로 구현

import React, {useState} from 'react';

const EventPractice = () => {
    const [form, setForm] = useState({
        username: '',
        message: ''
    });

    const { username, message } = form;

    const onChange = e => {
        const nextForm = {
            ...form, // 기존의 form 내용 복사
            [e.target.name]: e.target.value // 원하는 값 바꾸기
        };
        setForm(nextForm);
    };

    const onClick = () => {
        alert(username + ' ' + message);
        setForm({
            username: '',
            message: ''
        });
    };

    const onKeyPress = e => {
        if (e.key === 'Enter') {
            onClick();
        }
    };

    return (
        <div>
            <h1>이벤트 연습</h1>
            <input
                type='text'
                name='username'
                placeholder='사용자명'
                value={username}
                onChange={onChange}
            />
            <input
                type='text'
                name='message'
                placeholder='아무거나 입력해 보세요'
                value={message}
                onChange={onChange}
                onKeyPress={onKeyPress}
            />
            <button onClick={onClick}>확인</button>
        </div>
    )
};

export default EventPractice;
저작자표시 비영리 변경금지 (새창열림)

'React' 카테고리의 다른 글

[React] 컴포넌트의 라이프사이클 메서드  (2) 2023.03.23
[React] 컴포넌트 반복  (2) 2023.03.21
[React] ref : DOM에 이름 달기  (1) 2023.03.16
[React] 컴포넌트  (3) 2023.03.16
[React] Virtual DOM  (0) 2023.01.16
    'React' 카테고리의 다른 글
    • [React] 컴포넌트 반복
    • [React] ref : DOM에 이름 달기
    • [React] 컴포넌트
    • [React] Virtual DOM
    옝옹
    옝옹

    티스토리툴바