[React] input onChange 사용법 (onChange)사용 예시

2020. 9. 1. 02:56·지난 글 모음
반응형

class로 작성되어 있던 내용을 hooks로 다시 적어보았다. 

hooks로 간단하게 input onChange를 사용하는 예시는 아래의 글을 참조하기 바란다.

https://wonyoung2257.tistory.com/32


1. 기본 UI 준비

Example2.js

import React from "react";

export default class Example2 extends React.Component {
  state = {
    text: "텍스트",
  };
  render() {
    return (
      <div>
        <input />
        <h1>{this.state.text}</h1>
      </div>
    );
  }
}

Example2 컴포넌트를 위와 같이 작성해줍니다.

App.js

import React from "react";
import Example2 from "./Example2";

function App() {
  return (
    <div>
      <Example2 />
    </div>
  );
}

export default App;

 App.js에 Example2를 import 시킵니다.

 

npm start 하면 input 창 하나와 텍스트 창이 나옵니다.

실행 이미지

2. 함수 작성하기

import React from "react";

export default class Example2 extends React.Component {
  state = {
    text: "텍스트",
  };

  handleChange = (e) => {  // <- input값으로 text 변경 함수
    this.setState({
      text: e.target.value,
    });
  };

  render() {
    return (
      <div>
        <input onChange={this.handleChange} /> // <-변경된 곳
        <h1>{this.state.text}</h1>
      </div>
    );
  }
}

 handleChange라는 함수를 만들어주고 input 태그의 onChange에 적어줍니다.

 *onChange는 input 안의 값이 변경될 때에 발생합니다.

실행시켜서 input에 글자를 적으면 '텍스트'라는 글자가 input 안의 글로 바뀌게 됩니다.

 

이렇게 하면 input으로 state값을 변경할 수 있게 되었습니다.

 

3. input이 여러 개 있을 때 방법

프로그램을 만들다보면 input이 여러 개 사용되는 경우가 많습니다. 

좋은 예시로 회원가입폼에는 많은 input이 사용됩니다.

 

이럴 때는 어떻게 해야 할까요?

 

위의 예시대로 input을 3개 만들어 보겠습니다.

import React from "react";

export default class Example2 extends React.Component {
  state = {
    text: "텍스트",
    text2: "텍스트2",
    text3: "텍스트3",
  };

  handleChange = (e) => {
    this.setState({
      text: e.target.value,
    });
  };

  handleChange2 = (e) => {
    this.setState({
      text2: e.target.value,
    });
  };

  handleChange3 = (e) => {
    this.setState({
      text3: e.target.value,
    });
  };

  render() {
    return (
      <div>
        <input onChange={this.handleChange} />
        <h3>{this.state.text}</h3>
        <input onChange={this.handleChange2} />
        <h3>{this.state.text2}</h3>
        <input onChange={this.handleChange3} />
        <h3>{this.state.text3}</h3>
      </div>
    );
  }
}

 input 3개만 추가했는데 코드가 많이 길어졌습니다.

input 수만큼 함수를 만들어 주면 많이 비효율적입니다. 

 

효율적으로 변경해보겠습니다.

import React from "react";

export default class Example2 extends React.Component {
  state = {
    text: "텍스트",
    text2: "텍스트2",
    text3: "텍스트3",
  };

  handleChange = (e) => {
    this.setState({
      [e.target.name]: e.target.value, // <- 변경 후
    });
  };

  render() {
    return (
      <div>
        <input name="text" onChange={this.handleChange} /> // name 추가
        <h3>{this.state.text}</h3>
        <input name="text2" onChange={this.handleChange} />
        <h3>{this.state.text2}</h3>
        <input name="text3" onChange={this.handleChange} />
        <h3>{this.state.text3}</h3>
      </div>
    );
  }
}

 많이 간략하게 변했죠?

[e.target.name]의 값으로 input 태그의 name 값이 들어갑니다.

그래서 그에 맞는 state값이 변경됩니다.

하나의 handleChange 함수로 여러 input을 제어할 수 있게 되었습니다.

 

회원가입, 로그인 등 기본적인 기능에서 많이 사용되니 꼭 알아두세요!

반응형

'지난 글 모음' 카테고리의 다른 글

[React] express에서 query문을 사용하여 DB(mysql)에 데이터 가져오기  (2) 2020.09.12
[React] express에서 query문을 사용하여 DB(mysql)에 데이터 저장하기 1  (0) 2020.09.11
React 와 Express 연동하기 2 (Express에서 React 데이터 보내기) res  (1) 2020.09.04
React 와 Express 연동하기 1 (React에서 Express로 데이터 보내기)  (0) 2020.09.01
[React] React로 button이벤트 구현하기 (버튼 클릭 시 글자 변경하는 법)  (1) 2020.08.30
'지난 글 모음' 카테고리의 다른 글
  • [React] express에서 query문을 사용하여 DB(mysql)에 데이터 저장하기 1
  • React 와 Express 연동하기 2 (Express에서 React 데이터 보내기) res
  • React 와 Express 연동하기 1 (React에서 Express로 데이터 보내기)
  • [React] React로 button이벤트 구현하기 (버튼 클릭 시 글자 변경하는 법)
코딩하자영아
코딩하자영아
코딩공부내용 정리
  • 코딩하자영아
    코드치고 무게치고
    코딩하자영아
  • 전체
    오늘
    어제
    • 분류 전체보기 (82)
      • 개발 (1)
      • 지난 글 모음 (81)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    python
    자바스크립트 문자열 변수
    sw 정글
    프로그래머스
    React
    JavaScrpit
    회원가입 폼
    sw정글사관학교
    PINTOS
    사용자 정의 객체
    백준
    코딩테스트
    Spring
    node.js
    javascript
    템플릿 문자열
    malloc-lab
    목록 창 만들기
    Coding Test
    HTML
    dfsbfs
    정글sw
    onChange
    자바스크립트
    conding test
    Express
    SW정글
    회원가입
    html input
    리액트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
코딩하자영아
[React] input onChange 사용법 (onChange)사용 예시
상단으로

티스토리툴바