μ»΄ν¬λνΈμ λ³νλ λ°μ΄ν° λ£κ³ μΆμ΄μ.
λ€μ΄κ°κΈ° μ : ꡬ쑰λΆν΄ν λΉ
Β
λ²νΌμ λ§λ€κ³ ν΄λ¦μ ν λλ§λ€ λ³μμ 1μ© λν΄μ£Όλ ν¨μλ₯Ό λ§λ€κ³ λ‘κ·Έλ₯Ό μΆλ ₯ν΄ λ³΄λλ‘ νκ² μ΅λλ€. μ’μνλ μ νλ¨μ λ²νΌμ λ§λ€μ΄μ£Όκ³ , λ²νΌμ ν΄λ¦ μ΄λ²€νΈλ₯Ό λ£λλ‘ νκ² μ΅λλ€.
μ΄μ μ±ν°μμ μ¬λ¬ κ°μ λ¨μ΄κ° κ²°ν©λμ΄ μμΌλ©΄ λλ¬Έμλ‘ κ΅¬λΆνλ κ² κΈ°μ΅νμλμ? htmlμμλ
<button onclick="ν¨μμ΄λ¦">
μΌλ‘ μ μΈνλ κ²κ³Ό λ¬λ¦¬ 리μ‘νΈμμλ <button onClick={ν¨μ}>
λ‘ μ μΈν©λλ€. function Resume(props) { let like = 0; function clickLike() { like += 1; console.log(like); } const myColor = props.color; const styleColor = {color:myColor}; return( <div style={{border:"solid 1px", width:"500px"}}> <h1>{props.name} μκΈ°μκ°μ</h1> <h1>{props.hello}</h1> <h2>μ·¨λ―Έ : {props.hobby}</h2> <h2>μ’μνλ μμ : {props.food}</h2> <h2>μ’μνλ μ : <span style={styleColor}>{myColor}</span></h2> <button onClick={clickLike}>like <span>{like}</span></button> </div> ) } export default Resume;
Β

Β
like
λ²νΌμ λλ₯Ό λλ§λ€ λ§λ€μ΄λ λ³μκ° λ³νλ κ²μ κ°λ°μ λꡬλ₯Ό μΌλ³΄μλ©΄ λ³΄μ€ μ μμ΅λλ€. μ΄μ μ΄ λ³μλ₯Ό λ§€λ² νμ΄μ§μμ λ€μ 그리λλ‘ ν΄μΌ ν©λλ€.Β
useState
μ΄κ²μ λμμ£Όλ κ²μ΄ stateμ
λλ€. λ°λ‘ ν΄λ³΄κ² μ΅λλ€.
import React, { useState } from 'react'; function Resume(props) { const [like, setLike] = useState(0); // console.log(useState(0)); // let like = 0; const myColor = props.color; const styleColor = {color:myColor}; return( <div style={{border:"solid 1px", width:"500px"}}> <h1>{props.name} μκΈ°μκ°μ</h1> <h1>{props.hello}</h1> <h2>μ·¨λ―Έ : {props.hobby}</h2> <h2>μ’μνλ μμ : {props.food}</h2> <h2>μ’μνλ μ : <span style={styleColor}>{myColor}</span></h2> <button onClick={clickLike}>like <span>{like}</span></button> </div> ); } export default Resume;
Β
λ¨Όμ , useState Hookμ Reactμμ import νκΈ° μν΄ import ꡬ문μ
{useState}
λ₯Ό μΆκ°ν©λλ€. useState
λ₯Ό μ€ννλ©΄ state λ³μμ state λ³μμ μνλ₯Ό λ°κΏμ€ μ μλ ν¨μκ° λ°νλ©λλ€. κ·Έλ¬λ©΄ ꡬ쑰λΆν΄ν λΉ λ¬Έλ²μ μ΄μ©ν΄ like
μ setLike
μ λ³μμ ν¨μλ₯Ό ν λΉνκ² λ©λλ€.useState
μ κ΄νΈ μμλ μ΄κΈ°κ°μ λ£μ μ μμ΅λλ€. 0μ λ£κ² λλ©΄ like
μ μ΄κΈ°κ°μ 0
μ΄ λκ³ , ""μ λ£κ² λλ©΄ like
μ μ΄κΈ°κ°μ ""
κ° λ©λλ€. like
λ 0μΌλ‘ μ΄κΈ°νλμ΄μλ κ°μ΄κ³ , setLike
λ like
κ°μ λ³κ²½νκΈ° μν ν¨μμ
λλ€.Β
μ΄λ κ² λ³΄λ©΄ λ³μλ₯Ό λ§λ€κ³ λ³μμ κ°μ λ³κ²½νλ©΄ λμ§ μλμ? μ useStateλ₯Ό μ¬μ©νλμ? λΌλ μκ°μ΄ λ€ μ μμ΅λλ€.
λ³μλ₯Ό λ§λ€κ³ κ°μ λ³κ²½νλ©΄, λ³μ κ°μ λ³νλ₯Ό 체ν¬νκ³ λ€μ λ λλ§μ νλ μ½λλ₯Ό μμ±ν΄μΌ ν©λλ€. νμ§λ§ useStateλ₯Ό μ¬μ©νκ² λλ©΄ setState(μμμμλ setLike)λ₯Ό ν΅ν΄ κ°μ΄ λ³κ²½λ λ 리μ‘νΈλ μλμΌλ‘ ν΄λΉ μ»΄ν¬λνΈλ₯Ό λ€μ λ λλ§ν΄μ€λλ€.
μ΄λ€ μν(state)κ° λ³κ²½λλ©΄ κ·Έ λΆλΆμ λ€μ λλλ§νλ νΉμ§μ΄ μμ΅λλ€. κ·Έλμ νλ©΄μμ κ³μ λ°λλ λΆλΆμ λλΆλΆ stateλ₯Ό μ¬μ©ν©λλ€.
μμ) ν΄λ¦ μ΄λ²€νΈκ° μΌμ΄λ λλ§λ€ μ’μμ μ«μκ° λ°λλ κ², λ°μ΄ν°κ° λ°λ λλ§λ€ λ°λ λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ κ²
Β
import React, { useState } from "react"; function Resume(props) { const [like, setLike] = useState(0); function clickLike() { setLike(like + 1); } const myColor = props.color; const styleColor = { color: myColor }; return ( <div style={{ border: "solid 1px", width: "500px" }}> <h1>{props.name} μκΈ°μκ°μ</h1> <h1>{props.hello}</h1> <h2>μ·¨λ―Έ : {props.hobby}</h2> <h2>μ’μνλ μμ : {props.food}</h2> <h2> μ’μνλ μ : <span style={styleColor}>{myColor}</span> </h2> <button onClick={clickLike}>like</button> <span>{like}</span> </div> ); } export default Resume;
Β
Β
μ€μ μ μ©ν΄λ³΄κΈ°(useState
) β
like
λ²νΌμ λλ μ λ 'Like'κ° λνλκ³ , λ€μ like
λ²νΌμ λλ μ λλ 'Like'κ° μ¬λΌμ§λλ‘ λ°κΏλ³΄μΈμ!

μ λ΅
import React, { useState } from "react"; function Resume(props) { const [like, setLike] = useState(""); function clickLike() { if (like === "") { setLike("Like"); } else { setLike(""); } } const myColor = props.color; const styleColor = { color: myColor }; return ( <div style={{ border: "solid 1px", width: "500px" }}> <h1>{props.name} μκΈ°μκ°μ</h1> <h1>{props.hello}</h1> <h2>μ·¨λ―Έ : {props.hobby}</h2> <h2>μ’μνλ μμ : {props.food}</h2> <h2> μ’μνλ μ : <span style={styleColor}>{myColor}</span> </h2> <button onClick={clickLike}>like</button> <span>{like}</span> </div> ); } export default Resume;
Β