데이터 바인딩(Data Binding)

기본적인 데이터 바인딩

import { useState } from 'react';
import './App.css';

function App() {
	// 'useState'를 이용하여 데이터 바인딩 할 State 생성
	// 'count(state)'는 데이터를 저장 할 변수
	// 'setCount(setState)'는 변수 'count'의 데이터를 변경하기 위한 함수
  const [count, setCount] = useState(0);

  return (
    <>
	    {/* 'count'에 저장된 데이터를 출력 */}
      <p>{count}</p>
      
      {/* 클릭 이벤트를 이용해 호출할 'setCount()'호출 */}
      <button type="button" onClick={() => {setCount((prev) => prev + 1)}}>+</button>
    </>
  )
}

export default App;
import { useState } from 'react';
import './App.css';

function App() {
  const [count, setCount] = useState(0);

	// React의 동기적 상태 업데이트 문제 방지를 위해 prevState활용
  const incrementCount = () => {
    setCount((prev) => prev + 1);
  }

  return (
    <>
      <p>{count}</p>
      
      {/* 클릭 이벤트의 속성값도 중괄호를 이용해서 호출하고 싶은 함수 호출 */}
      <button type="button" onClick={incrementCount}>+</button>
    </>
  )
}

export default App;
import { useState } from 'react';
import './App.css';

function App() {
  const [count, setCount] = useState(0);

  const incrementCount = () => {
    setCount((prev) => prev + 1);
  } // +버튼
  
  const decrementCount = () => {
    setCount((prev) => {
      if(prev > 0) {
        return prev - 1;
      } else{
        return 0;
      }
    }); // -버튼 0일 땐 작동하지 않는다.
  }

  return (
    <>
      <p>{count}</p>
      <button type="button" onClick={incrementCount}>+</button>
      <button type="button" onClick={decrementCount}>-</button>
    </>
  )
}

export default App;

input을 데이터 바인딩

import { useState } from 'react';
import './App.css';

function App() {
  const [userInfo, setUserInfo] = useState({
    name: '홍길동',
    age: 20,
    gender: 'M'
  });

  const addAge = () => {
    const copy = {...userInfo};
    copy.age += 1;
    setUserInfo(copy);
  }

  return (
    <>
      <span>{`${userInfo.name} : ${userInfo.age} : ${userInfo.gender}`}</span>
      <button type="button" onClick={addAge}>나이 증가</button>
    </>
  )

}

export default App;