코드네임 :
Udemy - 양식 및 사용자 입력 작업 (폼) 본문
form이란?
입력값 추출(제출 관리, 값 추출..등등) & 데이터 검증(어렵다!, 오류 일찍 나타나는 문제)
htmlFor: 무슨프로퍼티냐 (for와 똑같은 속성)
폼은 제출할때마다 새로고침 됨!!
>> event.preventDefault()로 방지
import{ useState } from ''
export default function Login() {
function handleSubmit(event){
event.preventDefault();
}
return (
<form onSubmit={handleSubmit}>
<h2>Login</h2>
<div className="control-row">
<div className="control no-margin">
<label htmlFor="email">Email</label>
<input id="email" type="email" name="email" />
</div>
<div className="control no-margin">
<label htmlFor="password">Password</label>
<input id="password" type="password" name="password" />
</div>
</div>
<p className="form-actions">
<button className="button button-flat">Reset</button>
<button className="button">Login</button>
</p>
</form>
);
}
사용자 입력 관리
- 사용자가 입력한 값에 접근 -> useState로 input value 관리
ㄴ 음 이거 확실히 이해함
예를 들어 input에서 onChange에 useState의 두번째 매개변수를 호출하는 함수를 집어넣어놔서 값 변경때마다 갱신될수 있게
(onChange={(e) => setValue(e.target.value)} 패턴)
- 여러 개의 필드일 경우 useState({}) 또는 useReducer 사용
value= {enteredEmail} // 초기값이 이걸로 보이게 한거임
(event) => handleInputChange // 익명함수가 입력값으로 event 객체를 얻음
아니 여기 머라는; - 이따 한번 더보기
import { useState } from "react";
export default function Login() {
// const [enteredEmail, setEnteredEmail] = useState("");
// const [enteredPassword, setEnteredPassword] = useState("");
const [enteredValues, setEnteredValues] = useState({
email: "",
password: "",
});
function handleSubmit(event) {
event.preventDefault();
console.log(enteredValues);
}
function handleInputChange(identifier, event) {
setEnteredValues((prevValues) => ({
...prevValues,
[identifier]: event.target.value,
}));
}
// function handleEmailChange(event) {
// setEnteredEmail(event.target.value);
// }
// function handleEmailChange(event) {
// setEnteredEmail(event.target.value);
// }
function handlePasswordChange(event) {
setEnteredPassword(event.target.value);
}
return (
<form onSubmit={handleSubmit}>
<h2>Login</h2>
<div className="control-row">
<div className="control no-margin">
<label htmlFor="email">Email</label>
<input
id="email"
type="email"
name="email"
onChange={(event) => handleInputChange("email", event.target.value)}
value={enteredValues.email}
/>
</div>
<div className="control no-margin">
<label htmlFor="password">Password</label>
<input
id="password"
type="password"
name="password"
onChange={(event) => handleInputChange("password", event.target.value)}
value={enteredValues.password}
/>
</div>
</div>
<p className="form-actions">
<button className="button button-flat">Reset</button>
<button className="button">Login</button>
</p>
</form>
);
}
어오 코드 붙여넣기 귀찮아
흠,,
useRef
useRef()는 DOM에 직접 접근하는 방식
ㄴ 간단한 입력값만 읽을때
- reloading되지 않음
const email = useRef();
<input ref={email} />
.....
<button onClick={() => console.log(email.current.value)}>확인</button>
\
FormData, 네이티브 브라우저 APi 값 수집
- FormData는 <form>에서 자동으로 모든 필드값을 추출해줌
- new FormData(formElement)로 전체 필드 값 수집
Form 초기화
- button 타입 reset으로,,
- 입력값 초기화는 useState('');
State로 매번 키보드 입력마다 유효성 검사하기
onChange에 validate() 함수 추가
https://velog.io/@imzzuu/React-Input-control-과-useRef의-적절한-사용-Input-유효성-검사
React | Input control 과 useRef의 적절한 사용 (+ Input 유효성 검사)
Javascript 를 사용할때, 특정 DOM 을 선택하여 정보를 얻거나 임의로 조작해야 할때, getElementById 혹은 querySelector 과 같은 DOM Selector 함수를 사용하여 DOM 을 선택하였다. 하지만, React 는 이 기능을 대
velog.io
onBlur
흠 머라는거
따로 찾아보겠다
https://velog.io/@niboo/React-onFocus-와-onBlur이벤트를-사용하여-인풋창-색상-변경하기
[React] onFocus 와 onBlur이벤트를 사용하여 인풋창 색상 변경하기
로그인 페이지를 만드는 중 구현하기로 한 필수사항 중 인풋창을 클릭했을 때 밑줄 색이 바뀌고 인풋 바깥인 메인페이지를 다시 클릭했을 때 원래 색상으로 돌아오게 하는 기능이 있었다. 인풋
velog.io
custom Input Hook
아니 나느 왜 강의가 더 어려운가? 머라는건가???
https://velog.io/@jungmiin/React-커스텀-훅-사용하기-useFetch-useInput
[React] 커스텀 훅 사용하기 (useFetch, useInput)
공식 문서(https://ko.reactjs.org/docs/hooks-reference.html클래스 컴포넌트와 생명주기 메서드를 이용하여 작업을 하던 기존 방식에서 벗어나 함수형 컴포넌트에서도 더 직관적인 함수를 이용하여 작업할
velog.io
https://gggimmin-development-technology.tistory.com/47
[ React ] 공통된 로직, 기능을 깔끔하게! " Custom Hooks "
import React from "react"; import { useState } from "react"; const App = () => { // input의 갯수가 늘어날때마다 state와 handler가 같이 증가한다. const [title, setTitle] = useState(""); const onChangeTitleHandler = (e) => { setTitle(e.targ
gggimmin-development-technology.tistory.com
'👥Club > ☁️9oormthon univ☁️' 카테고리의 다른 글
React - HTTP 요청 보내기 (ex. 데이터베이스 연결) (0) | 2025.05.11 |
---|---|
React - HTTP 요청 보내기 (ex. 데이터베이스 연결) (0) | 2025.05.08 |
Udemy - 리액트 컴포넌트 스타일링 (1) | 2025.05.04 |
React 토?론주제 - 리스트 렌더링과 key (0) | 2025.04.30 |
Udemy - React 핵심 - 컴포넌트, JSX, 속성, 상태 등 (1) | 2025.04.27 |