next/link
사용하여 [홈 / 카테고리 / 좋아요한 상품 / 마이페이지]에 대한 링크 추가&&
만 14세 이상 검사 + 유효한 날짜인지 검사@$!%*?&
) 포함 → 비밀번호 형식 올바르지 않을 시 경고 문구 렌더링<label>
태그<label>
: 양식 입력 창의 요소들을 위한 캡션
<input>
태그와 함께 사용하는 이유 : <label>
태그 영역을 클릭해도 <input>
태그 반응 -> 사용자의 이용성 향상<label>
의 for
속성과 <input>
의 id
속성 연결<label>
태그를 통해 연결된 <input>
태그 인식 가능// 명시적 방식 : label의 for 속성과 input의 id 속성 명시함으로써 연결
<input
type="radio"
name="gender"
id="M"
value="M"
required
/>
<label htmlFor="M">남성</label>
<input
type="radio"
name="gender"
id="F"
value="F"
required
/>
<label htmlFor="F">여성</label>
cf) 암시적 방식
// 암시적 방식 : label 태그 안에 input 태그 넣기
<label>
이름
<input type="text" id="name" />
</label>
[트러블슈팅] : Warning: Invalid DOM property 'for'. Did you mean 'htmlFor'? 에러
=> 해결 : Javascript/Typescript에서 for
은 반복의 의미가 있으므로 HTML 상에서는 htmlFor
을 사용해야 한다.
useState
(setState
)는 비동기로 동작한다. (성능 향상 위해서)
React의 배치(batch) 처리 : 더 나은 성능을 위해 여러 개의 state 업데이트를 하나의 리렌더링으로 묶음 (16ms 단위)
-> 동기적으로 처리하는 방법
1. useEffect
의 의존성 배열 이용
2. setState
의 인자로 함수 사용(이전 값을 받아서 실행) 예) setState(prev => prev + 1)
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
useEffect(() => {
setIsLoginFormValid(email.length > 0 && password.length > 0)
}, [email, password]);
useEffect
의 의존성 배열을 이용하는 방법으로 개발하였음[트러블슈팅] : React Hook useEffect has a missing dependency 에러
=> 해결 : useEffect
내부에서 실행된 함수에서 사용되는 변수를 useEffect
의존성 배열 안에 넣어주지 않았기 때문에 발생한 오류