06. Event
λ€μ΄κ°κΈ°μ
React μμλ μ§μ μ μΈ DOM μ μ 근보λ€λ State λΌλ μν κ°μ μ΄μ©νμ¬ DOM μ λ³νλ₯Ό μ€λ€κ³ νμ΅λλ€. μ΄λ²μλ Event λ₯Ό νμ΅νμ¬ State λ₯Ό λ€μνκ² λ³κ²½νλ λ°©λ²μ λν΄μ μμλ³΄λ €κ³ ν©λλ€.
μ€μ΅
νλ‘μ νΈλ μ΄κΈ° μΈν μνλ‘ μ§νλμ΄μ§λλ€. +@ λ‘ μ΄μ λ styled-component λ₯Ό μ΄μ©νκΈ° λλ¬Έμ App.css νμΌμ΄ νμμμ΅λλ€.
μ°λ¦¬κ° μ λ ₯νλ κ°μ λ°λΌμ λμ΄, λμ΄, μμμ κ°μ§ λ°μ€λ₯Ό λ§λ€μ΄λ³΄κ³ μ ν©λλ€.
Input μ κ°μ μ λ ₯νμ¬ μ λ ₯λ κ°μ λ°νμΌλ‘ μμλ₯Ό λ§λ€κ³ μΆμ΅λλ€. λ¨Όμ Input, Label Component λ₯Ό λ§λ€μ΄λ³΄κ² μ΅λλ€.
// App.js
import React from 'react'
import styled from 'styled-components'
const Label = styled.h2`
color: #333;
`
const Input = styled.input`
padding: 10px 20px;
`
class App extends React.Component {
render () {
return (
<div>
<Label>Width</Label>
<Input />
<Label>Height</Label>
<Input />
<Label>Color</Label>
<Input />
</div>
)
}
}
export default AppBox Component λ₯Ό μ€λΉν©λλ€. Box λ λμ΄, λμ΄, μμμ Prop λ‘ λ°μ μ€νμΌμ ꡬμ±ν©λλ€.
μ΄λ²μλ Box μκ² λκ²¨μ€ State λ₯Ό μΆκ°ν©λλ€. κ·Έλ¦¬κ³ μΆκ°λ State λ₯Ό Box μκ² λ겨μ€λλ€.
μ°λ¦¬κ° μνλ κ²μ Input μ κ°μ μ λ ₯νκ³ Input μ λ§λ State κ° λ³κ²½μ΄λλ©΄μ λ³κ²½λ κ°μ΄ Box μκ² μ λ¬λκΈ°λ₯Ό μν©λλ€.
Input μ onChange Event λ₯Ό μΆκ°νμ¬ λ°λλ κ°μ μΊμΉν΄λ³΄κ² μ΅λλ€.

κ° Input λ€μ onChange λ₯Ό ν΅ν΄ handleStyles ν¨μλ₯Ό νΈμΆν©λλ€. handleStyles ν¨μλ event κ°μ²΄λ₯Ό λ겨λ°μ΅λλ€. event κ°μ²΄μλ ν΄λΉ μ΄λ²€νΈμ λν μ 보λ₯Ό λ΄κ³ μμ΅λλ€. Input λ€μ name κ°μ κ°μ§κ³ μκ³ Input μ΄κΈ° λλ¬Έμ value attribute λ₯Ό κ°μ§κ³ μμ΅λλ€. μ°λ¦¬λ μ΄ κ°λ€μ μ΄μ©νμ¬ state λ₯Ό λ³κ²½νλ €κ³ ν©λλ€.
JSX μμ Event λ₯Ό κ±Έμ΄μ€λλ ν¨μλ₯Ό JSX λ΄λΆκ° μλ class μλμͺ½μΌλ‘ λΉΌμ£Όλ κ²μ΄ μ’μ΅λλ€.
handleStyles ν¨μμ λμ΄μ€λ event κ°μ²΄λ₯Ό ν΅ν΄ Input μ name κ³Ό value λ₯Ό κ°μ Έμ΅λλ€.

μ΄μ μ΄ κ°λ€μ μ΄μ©ν΄μ State μ μ 보λ₯Ό update ν©λλ€. State λ₯Ό update ν λλ λ°λμ setState λΌλ ν¨μλ₯Ό μ΄μ©ν΄μΌν©λλ€.
κΈ°μ‘΄μ State λ€μ μ μ§νλ©΄μ μλ‘ λ€μ΄μ¨ key, value κ°λ§ update ν©λλ€.
Hook μ μ΄μ©νκΈ°
hook μ μμμ μμλ³Έ Class Component μλ μ΄μ§ λ€λ¦ λλ€. State μ μΈκ³Ό updateλ useState λΌλ κ²μ μ΄μ©ν©λλ€.
Last updated
Was this helpful?