1. form 태그 만들기
Login
const [user,setUser] = useState({ username:"", password:"" });
useState 를 사용해 user 컴포넌트의 상태를 정의하고 초기화한다.
Login
return ( <div> <form> <input type='text' placeholder='username' onChange={changeValue} name="username" /> <input type='password' placeholder='password' onChange={changeValue} name="password"/> <button type='submit'>로그인</button> </form> <button onClick={loginProcess}>로그인</button> <button onClick={move}>로그인 안하고 넘어가기</button> </div> );
input 태그로 username과 password 를 받는다. form태그에 데이터가 입력될 때 changeValue 함수가 실행된다.
Login
function changeValue(e){ console.log(e); }
onChange
가 실행될 때 이벤트 객체를 전달받는다.폼태그에 값이 입력됐을 때 발생하는 이벤트를 콘솔로 확인해본다.
입력한 값은 e.target.value 에 확인한다.
2. form 태그 데이터 받기
function changeValue(e){ console.log("value",e.target.value); console.log("value",e.target.name); setUser({ username : e.target.value, password : e.target.value }); console.log("username",user.username); console.log("password",user.password); }
changeValue를 통해 setUser의 상태를 폼태그의 입력값으로 업데이트한다.
이렇게 작성하면 username과 password 에 동일한 e.target.value 값이 동시에 입력된다.
3. Computed Property Name 활용
Computed Property Name은 객체의 프로퍼티 키를 문자열로 변환할 수 있는 표현식을 사용해(변수, 함수 등) 동적으로 지정하는 문법이다. 이를 통해 객체 리터럴 내부에서 Computed Property Name으로 프로퍼티 키를 동적으로 생성할 수 있다.
프로퍼티 키로 사용할 표현식을 대괄호”[]”로 묶어야 한다.
function changeValue(e){ console.log(e); console.log("e.target.value",e.target.value); console.log("e.target.name",e.target.name); //Computed Property Name setUser({ [e.target.name]:e.target.value, }); console.log("username",user.username); console.log("password",user.password); }
이렇게 하면 e.target.name r값이 username이 된다.
하지만 password를 입력하면 값이 초기화가 된다. 이때 전개연산자를 사용한다.
전개 연산자는 주로 상태 업데이트 시 불변성을 유지하면서 객체나 배열을 업데이트할 때 사용한다. 전개 연산자를 사용하면 e.target.name 값으로 username과 password 를 다 받을 수 있다.
Share article