๐Ÿค ์€์ง€log ๐Ÿค

[REACT] ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ( Event handler ) ๋ณธ๋ฌธ

๐Ÿ’™ React

[REACT] ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ( Event handler )

Eun_zii 2022. 10. 7. 17:44

onChange, Click, KeyPress

import { useState } from 'react'

const EventPractice = () => {
  const [message, setMessage] = useState('')

  const handleClick = () => {
    alert(message)
  }
  const handleKeyPress = (e) => {
    if (e.key === 'Enter') {
      alert(message)
    }
  }

  return (
    <div>
      <h1>์ด๋ฒคํŠธ ์—ฐ์Šต</h1>
      <input
        type="text"
        name="message"
        placeholder="์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•ด ๋ณด์„ธ์š”"
        onChange={(e) => {
          setMessage(e.target.value)
        }}
        onKeyPress={handleKeyPress}
      />
      <button onClick={handleClick}>ํ™•์ธ</button>
    </div>
  )
}

export default EventPractice
import { useState } from 'react'

const EventPractice = () => {
  
  const [username, setUsername] = useState('')
  const [message, setMessage] = useState('')
  
  const onChangeUssername = (e) => setUsername(e.target.value)
  
  const onChangeMessage = (e) => setMessage(e.target.value)
  
  const onClick = () => {
    alert(username + ': ' + message)
    setUsername('')
    setMessage('')
  }
  
  const onKeyPress = (e) => {
    if (e.key === 'Enter') {
      alert(message)
    }
  }
  
  return (
    <div>
      <h1>์ด๋ฒคํŠธ ์—ฐ์Šต</h1>
      <input
        type="text"
        name="username"
        placeholder="์‚ฌ์šฉ์ž๋ช…"
        onChange={onChangeUssername}
        value={username}
      />
      <input
        type="text"
        name="message"
        placeholder="์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•ด ๋ณด์„ธ์š”"
        value={message}
        onChange={onChangeMessage}
        onKeyPress={onKeyPress}
      ></input>
      <button onClick={onClick}>ํ™•์ธ</button>
    </div>
  )
}

export default EventPractice

 

  • input์„ ์‚ฌ์šฉํ•ด์„œ useState๋ฅผ ๊ด€๋ฆฌํ• ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ value๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
  • input ์‚ฌ์šฉ๋•Œ ๋งˆ๋‹ค ๊ฐ๊ฐ์˜ input์— ๋Œ€ํ•œ useState ์™€ onChangeํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ค˜์•ผ ํ•œ๋‹ค.(ex. input์ด 10๊ฐœ์žˆ์œผ๋ฉด useState๋„ 10๊ฐœ,onChangeํ•จ์ˆ˜๋„ 10๊ฐœ)
  • ๐Ÿ—‚ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ์ฒด์— ๋„ฃ์–ด์„œ ๊ด€๋ฆฌ ๐Ÿ—‚
    form ์œผ๋กœ ๊ด€๋ฆฌํ• ๋•Œ๋Š” input ํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋‹ˆ ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌํ•ด์•ผํ•จ.
import { useState } from 'react'

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

  const { username, message } = form // ๋น„๊ตฌ์กฐํ™”ํ• ๋‹น

  const onChange = (e) => {
    const newForm = {
      ...form,
      [e.target.name]: e.target.value, 
      // [] ๋„ฃ์–ด์คŒ์œผ๋กœ์„œ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๋™์ ์ธ key๊ฐ’ ์„ค์ •
    }
    setForm(newForm)
  }
  const onClick = () => {
    alert(username + ': ' + message)
  }

  const onKeyPress = (e) => {
    if (e.key === 'Enter') {
      alert(message)
    }
  }

  return (
    <div>
      <h1>์ด๋ฒคํŠธ ์—ฐ์Šต</h1>
      <input
        type="text"
        name="username"
        placeholder="์‚ฌ์šฉ์ž๋ช…"
        onChange={onChange}
        value={username}
      />
      <input
        type="text"
        name="message"
        placeholder="์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•ด ๋ณด์„ธ์š”"
        value={message}
        onChange={onChange}
        onKeyPress={onKeyPress}
      ></input>
      <button onClick={onClick}>ํ™•์ธ</button>
    </div>
  )
}

export default EventPractice
728x90