React Study

React - input 관리

2020. 12. 1. 23:56
목차
  1. 목차
  2. 📌 Introduction
  3. 📌 하나의 input 상태관리
  4. 📌 여러개의 input 상태관리
  5. 📌 Conclusion
반응형

목차

  • Introduction
  • 하나의 input 상태관리
  • 여러개의 input 상태관리
  • Conclusion

📌 Introduction

안녕하세요. 오늘은 react에서의 input관리에 대해서 알아보겠습니다. vue에서는 깔끔하게 v-model로 관리를 할 수 있지만 react에서는 해당 기능이 없어 조금 복잡하지만 잘 설명을 해보겠습니다.🎉

📌 하나의 input 상태관리

일단 하나의 input 상태관리는 비교적 쉽습니다. useState를 이용하여서 text를 바꿔주고 value로 연결을 시켜주면 됩니다.

import React, { useState } from "react";

function InputSample() {
  const [text, setText] = useState("");

  const onChange = (e) => {
    setText(e.target.value);
  };

  const initText = () => {
    setText('');
  }

  return (
    <div>
       // ⭐️ 바로 이렇게 상태를 관리해볼수 있어요 !
      <input onChange={onChange} value={text} />
      <button onClick={initText}>init</button>
      <div>
        <b>value: {text}</b>
      </div>
    </div>
  );
}

export default InputSample;

📌 여러개의 input 상태관리

여러개의 상태를 관리할때는 useState를 객체로 관리를 합니다.

import React, { useState } from "react";

function InputSample() {
  const [inputs, setInputs] = useState({
    name: "",
    nickname: "",
  });

  const { name, nickname } = inputs;

  const onChange = (e) => {
    // ⭐️ input에서 설정한 name이 들어오게 되어있어요.
    const { name, value } = e.target;

    // 객체 상태를 업테이트 할때는 불변성을 지켜줘야 합니다.
    setInputs({
      ...inputs,
      [name]: value,
    });
  };

  const initText = () => {
    setInputs({
      name: "",
      nickname: "",
    });
  };

  return (
    <div>
      <input
        // 이부분에서 name을 설정을 해줘야합니다.
        name="name" 
        placeholder="name" 
        onChange={onChange} 
        value={name} 
      />
      <input
        name="nickname"
        placeholder="nickname"
        onChange={onChange}
        value={nickname}
      />
      <button onClick={initText}>init</button>
      <div>
        <b>value: </b>
        {name} ({nickname})
      </div>
    </div>
  );
}

export default InputSample;

📌 Conclusion

이렇게 input을 관리를 하는 법에 대해서 한번 알아봤습니다. 새삼 v-model이 그리워지는 순간이 오네용. 그럼 다음 포스팅에서 만나요 안녕!

반응형

'React Study' 카테고리의 다른 글

React - 배열 랜더링  (0) 2020.12.03
React - useRef 특정돔 지정하기  (0) 2020.12.02
React - useState  (0) 2020.11.12
React - Conditional Rendering  (0) 2020.11.10
React - Props  (0) 2020.11.09
  1. 목차
  2. 📌 Introduction
  3. 📌 하나의 input 상태관리
  4. 📌 여러개의 input 상태관리
  5. 📌 Conclusion
'React Study' 카테고리의 다른 글
  • React - 배열 랜더링
  • React - useRef 특정돔 지정하기
  • React - useState
  • React - Conditional Rendering
eddie0329
eddie0329
Front-end Developer
반응형
eddie0329
Eddie Sunny's Blog
eddie0329
전체
오늘
어제
  • 분류 전체보기 (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • 잡담 (0)
    • Swift (19)
    • Rust (2)
    • 회사이야기 (2)
    • ReactNative Study (2)
    • Vitest (0)

블로그 메뉴

  • Home

공지사항

인기 글

태그

  • react-component-slot
  • javascript pattern
  • react useRef
  • Design Pattern
  • Javascript
  • BDD
  • swift5
  • Kotlin
  • swift
  • client only
  • Vue
  • Nextjs
  • slot 패턴
  • CSS
  • apollo
  • vue tdd
  • Cypress
  • storybook6
  • svelte
  • react
  • vue storybook
  • D3
  • TypeScript
  • vue3
  • TDD
  • vue bdd
  • vue cypress
  • Vue test
  • jest
  • React Native

최근 댓글

최근 글

hELLO · Designed By 정상우.
eddie0329
React - input 관리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.