React - useState hook 사용해보기

정세형·2023년 2월 28일

react

목록 보기
6/6

State

React에서 "상태(state)"는 컴포넌트의 현재 상태를 나타내는 객체를 의미합니다. 시간이 지나면서 변경될 수 있는 데이터를 저장하고 관리하는 데 사용되며, 컴포넌트의 동작에 영향을 줄 수 있습니다.

다시 말해, 컴포넌트의 상태는 그것의 메모리처럼 작동하여, 컴포넌트의 메서드에서 업데이트 및 액세스할 수 있는 데이터를 저장할 수 있습니다. 상태가 변경되면, React는 자동으로 컴포넌트를 다시 렌더링하여 업데이트된 상태를 반영합니다.

Import를 해서 useState hook을 불러옵니다.

import {useState} from 'react';
//or
import React, { useState } from 'react';

useState hook 사용 예시입니다.

import React, { useState } from 'react';

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

  function handleClick() {
    setCount(count + 1);
  }

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={handleClick}>
        Click me
      </button>
    </div>
  );
}

이 예제에서는 useState 훅을 사용하여 Counter 컴포넌트의 상태를 정의합니다. count 변수는 상태의 현재 값을 나타내고, setCount는 상태를 업데이트하는 데 사용되는 함수입니다. 버튼이 클릭되면 handleClick 함수가 호출되며, setCount를 호출하여 상태를 업데이트합니다.

또다른 예시입니다.

import {useState} from 'react';

function Create(props){
  return<article>
    <h2>Create</h2>
    <form onSubmit={event=>{
      event.preventDefault();
      const title = event.target.title.value //event 발생한 태그 event.target == <form> 에서 name이 title인거 에 값을 가져와
      const body = event.target.body.value
      props.onCreate(title, body);
    }}>
      <p><input type='text' name="title" placeholder='title'></input></p>
      <p><textarea name='body' placeholder='body'></textarea></p>
      <p><input type="submit" value="Create" ></input></p>
    </form>
  </article>
}


function App() {

  const [mode, setMode] = useState('WELCOME');
  const [id, setId] = useState(null);
  const [nextId, setNextId] =useState(4);
  const [topics,setTopics ]= useState( [
    { id: 1, title: 'html', body: 'html is ....' },
    { id: 2, title: 'css', body: 'css is ....' },
    { id: 3, title: 'javascript', body: 'javascript is ....' },
  ]);
  let content = null;
  if(mode ==='CREATE'){
    content = <Create onCreate={(_title, _body)=>{
      const newTopic ={id: nextId, title: _title, body: _body}
      const newTopics =[...topics];
      newTopics.push(newTopic);
      setMode('READ');
      setId(nextId);
      setNextId(nextId+1);
      setTopics(newTopics);
    }}></Create>
  }
  return (
    <div>
      {content}
      <a href ='/create' onClick={(event) =>{
        event.preventDefault();
        setMode('CREATE');
      }}>Create</a>
    </div>
  );
}

export default App;



React에서 상태를 사용하면 사용자 입력 및 다른 이벤트에 반응할 수 있는 동적이고 상호작용적인 컴포넌트를 만들 수 있습니다. 이것은 복잡하고 반응적인 사용자 인터페이스를 구축하는 데 필수적인 강력한 기능입니다.

profile
👨‍💻github.com/pos1504 💌pos1504@gmail.com 🙋‍♂️https://www.linkedin.com/in/%EC%84%B8%ED%98%95-%EC%A0%95-68067b287/

0개의 댓글