키모스토리

#8 useState (상태관리) 본문

Web Devlopment/ReactJs

#8 useState (상태관리)

키모형 2025. 3. 22. 11:55
반응형

useState는 컴포넌트에 state 변수를 추가할 수 있는 React Hook입니다.

const [state, setState] = useState(initialState)

 

 

 

참고 : https://ko.react.dev/reference/react/useState

 

useState – React

The library for web and native user interfaces

ko.react.dev

 

import { useState } from "react";
import "./App.css";
import Sub from "./Sub";


function App() {
  console.log("App실행");
  // useState : 데이터를 상태값으로 설정
  // React안에 hooks 라이브러리 상태값이 됨 (UI와 동기화됨)  
  const[number, setNumber] = useState(1);
  const add = () => {
    // setNumber(number+1); // 리엑트한테 number값 변경을 요청.
    setNumber(prev => prev + 1); // 함수형 업데이트 적용
    console.log("add", number);
  };

  // 초기데이터 
  const userData=[
    {id:1, name:"홍길동"},
    {id:2, name:"임꺽정"},
    {id:3, name:"장보고"},
    {id:4, name:"이순신"},
  ];
  console.log(userData);  


  // 회원목록
  const[users, setUsers] = useState(userData);
  const updateUsers = () => {
    const getData={id:5, name:"김유신"}; // api호출결과값.

    // const newList=userData.concat(getData); // 원본데이터 불변성
    // setUsers(newList);
    // console.log(newList);        
    
    // concat과 동일한 결과, 더욱 간단해짐.
    setUsers([...userData, getData])
    console.log(userData);  
  };

  // 랜더링 시점 = 상태값 변경이 되는 경우 
  // 이전 데이터와 현재 데이터가 같은 경우 랜더링 하지 않음
  return (
    <div>
      <h1>useState</h1>
      <h1>숫자 : {number}</h1>
      <button key='addButton' onClick={add}>더하기</button>
      <Sub/>
      <div>
        <button onClick={updateUsers}>유저추가</button>
        <div>
          {users.map(user => (
            <h1 key={'h1-'+user.id}>
              {user.id}.{user.name}
            </h1>
          ))}
        </div>
      </div>

    </div>
  );
} 
export default App;

 

 

반응형

'Web Devlopment > ReactJs' 카테고리의 다른 글

#10 useMemo  (0) 2025.03.24
#9 useEffect  (0) 2025.03.24
#7 배열(map, filter, slice, concat, spread연산자)  (0) 2025.03.21
#6 JSX  (0) 2025.03.21
#5 리액트 시작하기  (1) 2025.03.12