<input>
에 입력된 값을 state 에 저장해주세요.<input>
에서 onChange
event 발생handleIdInput
함수 실행handleIdInput
는 이벤트를 인자로 받음event.target.value
)을 state에 저장<input>
에도 동일하게 적용Add : Mission 1 - 사용자 입력 데이터 저장 기능 구현
commit message를 남긴 후 push 해주세요.우선 Login id input 창에 onChange 라는 event를 발생
event 발생 시 handleIdInput 이라는 함수를 실행한다고 했으니까, 다음과 같이 적어줍니다.
근데 우리는 아직 handleInput 이 어떤 값을 불러오는 함수인지 아직 정해주지 않았습니다. 그래서 이제 함수를 한번 생성하러 가봅시다!
문제를 잘 읽어보면 handleInput 함수는 이벤트를 인자로 받겠다고 하네요.
function handleInput(){} 을 해주고, 그 handleInput 함수의 파라미터 안에 (event) 혹은 (e) 라고 적어주면! 3번까지 해결 완료~~~
이벤트를 인자로 받는 handleInput 함수 만들기까진 성공했으니, console.log() 를 통해서 이 event 라는 인자를 찍어봤을 때 어떤게 나오는지 한번 봐봅시다!
이후 npm start 통해서 로그인 화면을 띄우고, id 적는 곳에 아무 값이나 입력한 후 개발자 도구를 통해 console 찍힌 것을 확인해보면,
위와 같이 id input 창에 적힌 텍스트에 관련된 이벤트가 콘솔창에 계속 찍히는 것을 볼 수 있습니다.
문제 4번을 확인해보면 event가 일어난 요소에 담긴 value 값 (event.target.value)을 state에 저장하라고 하는데, 과연 저 값은 무엇을 말하는 건지 궁금하지 않으신가요? (궁금증 강요)
이 값은 개발자 도구 콘솔창에서 직접 확인해보실 수 있습니다.
위와 같이 콘솔창에 찍히는 이벤트 관련 정보를 눌러서 봐보면 하단에 target: input.LoginId 라는 것을 발견할 수 있고, 이 값의 value가 (...) 으로 되어있는데, 저 (...) 부분을 클릭해보면! value: "qwer" 이라고 우리가 input 창에 적어준 텍스트 그대로를 값으로 갖고 있는 걸 알 수 있습니다!
즉 event.target.value 라는 것이 결국, 우리가 input id 창에 입력하는 대로 계속 변하는 텍스트를 value 값으로 갖게 된다는 것이란 걸 알게 되었습니다!
이것은 state 개념을 이해하는 것과 밀접한 관련이 있어요.
state 란 화면에서 보여줄 컴포넌트의 UI 정보(상태)이며, 이 속성값이 변하면 리액트는 자동으로 UI를 업데이트 해줍니다. 즉, 계속해서 변화하는 특정 상태를 뜻하는 것이며 state는 얼마든지 데이터가 변경될 수 있습니다.(props 와 다른점)
함수 컴포넌트의 state는 useState hook 을 사용하여 정의합니다. 기본 구조에 대해서 알아봅시다!
const [state, setState] = useState('');
// useState('초기값') 는 배열을 반환합니다.
// 여기서 state 는 상태값이 저장되는 변수라고 생각하면 되고,
// setState 는 이 state 상태값을 변경해주는 함수
// 이 setState 함수가 호출되서 state가 바뀌면
// 리액트는 이 컴포넌트를 다시 렌더링 해줍니다.
// useState 같은 내장 Hook 사용하기 위해선 {} 바로 다음에,
즉 가장 최상위에서만 Hook을 호출해줘야 합니다.