<input onChange={(e) => {console.log(e.target.value);}}></input>
(e) => 이벤트 파라미터, target 은 변화 혹은 이벤트가 일어나고 있는 html 태그등을 의
이벤트 bubbling 막기
상위 html로 퍼지는 이벤트 버블링을 막고 싶으면 e.stopPropagation()
<span onClick={(e)=>{ e.stopPropagation(); console.log(1)}}>
사용자 입력 값 저장하여 출력하기
1. 힌트 : 이미 map을 이용해놓았기 때문에 state 값만 변경해주면 된다.
// let [글제목, 글제목수정] = useState(["a","b","c"]) 에 새 원소를 추가해주면 됌
과정 1: value 값 저장하기
<input onChange((e)=>{입력값 변경(e.target.value)})> // 입력값에 밸류값 전달
<button onClick(()=>{글제목수정(글제목.concat(입력값))})> //글제목에 입력값 원소 추가
벨로퍼트 식 리액트 예시
import React, { useState } from "react";
function InputSample() {
const [text, setText] = useState("");
const onChange = (e) => {
setText(e.target.value);
};
// 현재 onChange가 일어나고 있는 DOM == input, 해당 값의 value를
// setText에 삽입한다는 것이다.
// onChange와 같은 이벤트 발생 시 , e를 파라미터로 받는데,
// e.target은 이벤트가 발생한 DOM 객체를 가르킨다.
const onReset = () => {
setText("");
};
return (
<div>
<input onChange={onChange} value={text} />
<button onClick={onReset}>초기화</button>
<div>
<b>값: {text}</b>
</div>
</div>
);
}
export default InputSample;
사용자 입력 값이 여러 개 일때는 어떻게 할까?
보통 로그인할 때 우리는 ID만 입력하는 것이 아니라, PASSWORD 도 입력한다.
onChange 함수를 두 개 만들고, useState를 두 개 만들어서 관리하는 것도 하나의 답이겠지만,
이는 효율적인 방법이 아니다.
더 좋은 방법은 name 을 지정해주는 것이다. (ID의 개념) + useState를 객체형태로 관리해주면 된다.