-
React - input 사용하기React 2020. 9. 8. 19:28
- App.js -
import React from 'react'; import InputSample from './InputSample'; function App() { return ( <InputSample /> ); } export default App;
이벤트 함수 생성
- InputSample.js -
function InputSample(){ const onChange() = (e) => { console.log(e.target); } return ( <div> ....
e 는 아래 코드에서 어떤 이벤트가 생성될 때, 이벤트에 대한 내용이 담기는 객체이다.
e.target은 이벤트가 발생한 DOM에 대한 내용을 담고 있다.
e.target.value 현재 발생하는 이벤트의 구체적인 값을 담고 있음
import React, { useState } from 'react'; function InputSample(){ const [text, setText] = useState('') const onChange = (e) => { setText(e.target.value); } const onReset = () => { setText('') } return ( <div> <input onChange={onChange} value={text}/> <button onClick={onReset}>초기화</button> <div> <b>값 : </b> {text} </div> </div> ); } export default InputSample;
만약 input 에 value={text} 쓰지 않으면 초기화할 때 입력창에 쓴 글씨는 사라지지 않는다.
-> 다른 함수로 값 변경할 때, 다 같이 입력값을 변경하고 싶을 때는 value값을 지정해주어야 한다.
input 여러개 사용하기
import React, { useState } from 'react'; function InputSample(){ const [inputs, setInputs] = useState({ name: '', nickname: '', }); const { name, nickname } = inputs; const onChange = (e) => { const {name, value} = e.target; setInputs({ ...inputs, // 기존의 내용 가져오기 [name]: value, // 대괄호로 감싸면 상태에 따라 name또는 nickname값을 지정한다. }); }; const onReset = () => { setInputs({ name: '', nickname: '', }); } return ( <div> <input name="name" placeholder="이름" onChange={onChange} value={name} /> <input name="nickname" placeholder="닉네임" onChange={onChange} value={nickname} /> <button onClick={onReset}>초기화</button> <div> <b>값 : </b> {name} ({nickname}) </div> </div> ); } export default InputSample;
객체를 업데이트할 때는 spread문법과 특정값을 덮어씌우는 방식으로 접근해야 한다.
setInputs({ ...inputs, // 기존의 내용 가져오기 [name]: value, // 대괄호로 감싸면 상태에 따라 name또는 nickname값을 지정한다. });
여기서의 name은 name="name"의 name 이다.
하지만 const {name, nickname} = ... 이 부분에서는 "name" 을 가리킴
'React' 카테고리의 다른 글
React - 배열 렌더링 (0) 2020.09.09 React - 특정 DOM 선택하기(useRef) (0) 2020.09.09 React - 사용자 인터렉션 따라 내용 변경하기(useState) (0) 2020.09.08 React - 조건부 렌더링 (0) 2020.09.08 React - props 통해 컴포넌트에 값 전달 (0) 2020.09.08