리액트 #08 - Forms

2017. 4. 5. 09:30·개발/ReactJS

이번에는 리액트에서 Form을 어떻게 다루는 지에 대해서 알아봅시다.






리액트는 데이터의 흐름이 단방향입니다.


따라서 여러 폼에 변화하는 같은 값을 적용하려면, 따로 처리를 해주어야 합니다.


아래와 같이 초기 value 값을 state.data로 적용해주고, 이 후에 onChange로 변하는 값을


state로 갱신합니다.



App.js



import React from 'react';


class App extends React.Component {


   constructor(props) {
      super(props);
    
      this.state = {
         data: 'Initial data...'
      }


      this.updateState = this.updateState.bind(this);


   };


   updateState(e) {
      this.setState({data: e.target.value});
   }


   render() {
      return (
         <div>
            <input type = "text" value = {this.state.data} 
               onChange = {this.updateState} />
            <h4>{this.state.data}</h4>
         </div>
      );
   }
}


export default App;




- 실행 화면 (입력 전)


- 실행 화면 (입력 후)





좀 더 복잡하게 한다면, 다음과 같이 할 수 있습니다.



import React from 'react';


class App extends React.Component {


   constructor(props) {
      super(props);
    
      this.state = {
         data: 'Initial data...'
      }


      this.updateState = this.updateState.bind(this);
   };


   updateState(e) {
      this.setState({data: e.target.value});
   }


   render() {
      return (
         <div>
            <Content myDataProp = {this.state.data} 
               updateStateProp = {this.updateState}></Content>
         </div>
      );
   }
}


class Content extends React.Component {


   render() {
      return (
         <div>
            <input type = "text" value = {this.props.myDataProp} 
               onChange = {this.props.updateStateProp} />
            <h3>{this.props.myDataProp}</h3>
         </div>
      );
   }
}
export default App;


'개발 > ReactJS' 카테고리의 다른 글

리액트 #07 - Component Life Cycle  (1) 2017.04.04
리액트 #06 - Component API  (1) 2017.04.03
리액트 #05 - State & Props  (0) 2017.04.01
리액트 #04 - Components  (0) 2017.03.31
리액트 #03 - JSX  (0) 2017.03.31
'개발/ReactJS' 카테고리의 다른 글
  • 리액트 #07 - Component Life Cycle
  • 리액트 #06 - Component API
  • 리액트 #05 - State & Props
  • 리액트 #04 - Components
pfldy2850
pfldy2850
인공지능의 서비스화와 현실화에 관심이 많은 엔지니어입니다.
  • pfldy2850
    DEV.DY
    Github LinkedIn
  • 전체
    오늘
    어제
    • All (105)
      • AI (68)
        • 어플리케이션 개발 (11)
        • 모델 인퍼런스 (9)
        • 검색 시스템 (11)
        • MLOps (8)
        • 기술,논문 리뷰 (7)
        • Lecture notes (10)
        • 오픈소스 릴리즈 노트 (12)
      • Infra (4)
        • Kubernetes (1)
        • Service Mesh (1)
        • Service Proxy (1)
        • Storage (1)
      • Data Engineering (4)
        • Spark (3)
        • Kafka (1)
        • Delta Lake (0)
      • 컴퓨터 공학 (2)
        • 소프트웨어 공학 (2)
      • 개발 (16)
        • ReactJS (8)
        • NodeJS (2)
        • Python (4)
        • Pytorch (1)
        • git (1)
      • 영어공부 (2)
        • GPT로 영어 회화 공부 (2)
      • 활동 (2)
        • 2017 NDC (2)
      • 기타 (1)
      • 레거시 (6)
        • OS (6)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
pfldy2850
리액트 #08 - Forms
상단으로

티스토리툴바