일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- typescript hooks
- next typescript example
- typescript next
- typescript react next
- react nextjs
- 삿포로 공항
- 카라쿠 커리
- nextjs prettier
- 스타벅스
- nextjs redux example
- nextjs redux
- nextjs eslint
- react
- 일본스타벅스
- NODE_PATH
- react hooks
- react map
- 카라쿠
- 일본 아메리카노 가격
- codepen
- typscript react
- create-next-app
- 신겐라멘
- redux example
- react hook typescript
- 후쿠오카 스타벅스
- nextjs typescript
- 리액트 이벤트 핸들링
- nextjs
- react 스프레드
- Today
- Total
일안하고블로그
[ React ] 리액트 이벤트 핸들링 기초 - input 입력 본문
React 이벤트 핸들링 기초 사용법
리액트에서 onClick 과 같은 이벤트를 작성하는 방법이 약간 다르고, 기초 적이지만 중요한 부분을 정리를 해보았습니다.
1. 이벤트의 이름은 'onclick' 이 아닌 'onClick' 으로 (카멜케이스) 작성.
2. 이벤트는 함수의 형태 값을 전달한다.
3. DOM 요소에서만 이벤트 설정 가능.
다음 3가지는 이론 적인 것이고 이제 실제로 예제를 만들어서 3가지에 대해서 정리를 해보려고 합니다.
create-react-app으로 프로젝트를 만듭니다.
$ create-react-app dh-event-input
설치가 완료 되었으면, 프로젝트 폴더 이동
$ cd dh-event-input
프로젝트 이동후, 실행.
$ yarn start
화면이 나오면 성공입니다.
이제 App.js를 변경해 보겠습니다.
import React, { Component } from 'react';import './App.css';class App extends Component {/* id password state값 으로 정의 *//* input value 변경 ==> onChange *//* 로그인 버튼 클릭 ==> onClick */render() {return (<div className="App"><header className="App-header"><input type="text" placeholder="아이디" /><input type="password" placeholder="비밀번호" /><button>로그인</button></header></div>);}}export default App;
첫번째로 App.js에서 input 및 button을 적어두었습니다.
다음으로 state를 정의해두고 해주고 onCreate 이벤트를 사용해 보겠습니다.
import React, { Component } from 'react';import './App.css';class App extends Component {/* id password state값 으로 정의 */state = {id: '',password: ''}/* input value 변경 ==> onChange */appChange = (e) => {this.setState({id: e.target.value});}/* 로그인 버튼 클릭 ==> onClick */appClick = () => {console.log(`id는:${this.state.id}`);}render() {const { id, password } = this.state;const { appChange, appClick } = this;return (<div className="App"><header className="App-header"><input type="text" placeholder="아이디" value={id} onChange={appChange} /><input type="password" placeholder="비밀번호" /><button onClick={appClick}>로그인</button></header></div>);}}export default App;
이렇게 기본적으로 input태그를 활용하여 onCreate와 onClick 이벤트를 사용해 보았는데, 한가지 문제가 있습니다.
1개의 input 을 사용할때는 문제가 없지만, 2개 이상의 input 태그를 사용할때 매번 이벤트 함수를 만드는데 버거움이 있습니다.
이러한 경우 input 태그의 다른 속성을 활용하여 key값도 받아오도록 하면됩니다. 저는, input의 name 속성을 활용해 보겠습니다.
<input type="text" name="id" placeholder="아이디" value={id} onChange={appChange} /><input type="password" name="password" placeholder="비밀번호" value={password} onChange={appChange} />
다음으로 this.setState 할때 , key 값을 [] 로 감싸주고 , target.name값을 받아 옵니다.
appChange = (e) => {this.setState({[e.target.name]: e.target.value});}
마지막으로 input focus에서 Enter키를 누를때 이벤트 onKeyPress 를 만들어 주시면 됩니다.
import React, { Component } from 'react';import './App.css';class App extends Component {/* id password state값 으로 정의 */state = {id: '',password: ''}/* input value 변경 ==> onChange */appChange = (e) => {this.setState({[e.target.name]: e.target.value});}/* 로그인 버튼 클릭 ==> onClick */appClick = () => {console.log(`id는 : ${this.state.id}\npw는 : ${this.state.password}`);}appKeyPress = (e) => {if (e.key === 'Enter') {this.appClick();}}render() {const { id, password } = this.state;const { appChange, appClick, appKeyPress } = this;return (<div className="App"><header className="App-header"><input type="text" name="id" placeholder="아이디" value={id} onChange={appChange} /><input type="password"name="password"placeholder="비밀번호"value={password}onChange={appChange}onKeyPress={appKeyPress}/><button onClick={appClick}>로그인</button></header></div>);}}export default App;
'React > 기초' 카테고리의 다른 글
[ React ] 리액트 반복함수 - (map , slice , concat , spread 사용 예제) (1) | 2018.10.17 |
---|---|
[ React ] JSX - Fragment 사용 (0) | 2018.10.16 |