[React] State와 Select Tag Binding.

2024. 10. 13. 08:00·Front End/React
반응형

 

안녕하세요 펭귄 교수입니다.

 

React 프로젝트 진행 중 메모 할 것이 생겨 포스팅합니다.


React State

리액트에서 데이터 관리 방식에는 여러 가지가 있습니다.

컴포넌트 출력에 필요한 데이터들은 대개 State 혹은 Redux 등의 방식으로 관리됩니다.

 

그 중 State와 HTML Tag 인 Select의 Binding 방식에 관해 작성해보고자 합니다.

 

// 기본적인 State 사용법
import React, { useState } from 'react';

const App = () => {
    const [data, setData] = useState("");
    
    return (
    	<>
            <input value={data} onChange={(e) => { setData(e.target.value); }} />
            <p>{data}</p>
        </>
    );
}

페이지 출력

 

<!-- select 태그의 사용법 -->
<select>
    <option value="C">C</option>
    <option value="C++">C++</option>
    <option value="C#">C#</option>
    <option value="JAVA">JAVA</option>
</select>

Select

 

Binding

그러면 Select 태그에서 옵션의 값을 바꾸었을 때, state 값을 변경하고,

setState를 통해 state가 변경되었을 때 Select 태그의 value 값을 변경하는 법에 대해 이야기 하겠습니다.

 

import React, {useState} from "react";

const App = () => {
  // options들의 리스트
  const selectList = ["C", "C++", "C#", "JAVA"];
  // 현재 선택되고 있는 option의 인덱스
  const [selectIdx, setSelectIdx] = useState(0);
  // 현재 선택되고 있는 option value
  const [selected, setSelected] = useState("C");
  
  // select의 값이 변경될 때 해당 함수 호출
  const onChange = (e) => {
    setSelected(e.target.value);
  }
  
  // Change 버튼 클릭 이벤트
  // selectIdx를 1 증가, 최대 인덱스인 3을 초과할 때 나머지 연산을 통해 0으로 변경
  const onClick = (e) => {
    setSelectIdx((selectIdx+1) % 4);
    setSelected(selectList[selectIdx]);
  }

  return (
    <>
      {/* 버튼을 누르면 아래 value가 변경 */}
      <button type="button" onClick={onClick}>Change</button>
      {/* value 값에 state를 연결, 바뀔 때마다 실행하는 이벤트 onChange를 통해 state랑 연결 */}
      <select value={selected} onChange={onChange}>
        <option value="C">C</option>
        <option value="C++">C++</option>
        <option value="C#">C#</option>
        <option value="JAVA">JAVA</option>
      </select>
    </>
  );
}

 

처음 단계
change 버튼 클릭 시

 

 

반응형

'Front End > React' 카테고리의 다른 글

[TIL] 서버로 부터 받은 Byte Data, React에서 다운 받기  (0) 2024.11.19
[React] 리액트에서 클립보드 사용하기  (0) 2024.10.13
[React] Title, Favicon 변경하는 법  (0) 2024.09.20
'Front End/React' 카테고리의 다른 글
  • [TIL] 서버로 부터 받은 Byte Data, React에서 다운 받기
  • [React] 리액트에서 클립보드 사용하기
  • [React] Title, Favicon 변경하는 법
Dev.Poinguinie
Dev.Poinguinie
게임, 코딩 블로그 입니다. 여러 일상적인 글도 올려요! 많이 봐주세요! 감사합니다.
  • Dev.Poinguinie
    펭귄교수
    Dev.Poinguinie
    • 분류 전체보기
      • 새티스팩토리
        • 정보
        • 모드
        • 리뷰
      • 펠월드
        • 정보
        • 패치노트
      • 게임
        • 스팀 세일
        • 테라리아
        • 디펜서바이버
      • App
        • Kotlin
        • Flutter
      • Front End
        • HTML
        • JavaScript
        • React
      • Back End
        • Node.js
      • Docker
        • Docker 강의
        • Docker Project
      • 프로그래밍
        • AI
        • Chrome Extension
        • Markdown
        • Python
        • C++
        • Linux
        • Error
        • Tool
      • Computer Science
        • Algorithm
        • Network
      • 게임 프로그래밍
        • 유니티
      • 제작
        • 웹사이트
        • 기타 프로그램
      • 일상
        • 자작시
        • 노래 추천 및 정보
        • 블로그 운영
        • 내일의 모든 것
        • 오블완 챌린지
      • 리뷰
        • 식당 리뷰
        • IT 리뷰
  • 최근 글

  • 링크

    • 새티스 팩토리 모드
    • 깃허브 블로그
    • 깃허브 프로필
  • 공지사항

    • 티스토리 스킨 변경
    • 파이썬 코딩 강의 공지사항
  • hELLO· Designed By정상우.v4.10.3
Dev.Poinguinie
[React] State와 Select Tag Binding.
상단으로

티스토리툴바