반응형
kent c dodds 의 Epic React 기초 강의 공부 내용 정리이다.
추가로 적고 넘어갈만한 팁이 있다면
fragment는 flexbox나 grid랑 사용하면 좋다고 한다.
jsx를 바벨이 해석할 때. 함수형 컴포넌트와 일반 컴포넌트를 맨 앞글자의 대소문자 여부로 판단하기 때문에 주의해야 함.
function UsernameForm({onSubmitUsername}) {
const [error,setError] = React.useState(null);
const [value,setValue] = React.useState("");
function handleSubmit(event){
event.preventDefault()
const value = event.target.elements.usernameInput.value;
onSubmitUsername(value);
}
// function handleChange(event){
// setError(event.target.value===event.target.value.toLowerCase() ? null : 'username must be lower case')
// }
function handleChange(event){
setValue(event.target.value.toLowerCase());
}
return (
<form onSubmit={handleSubmit}>
<div>
<label htmlFor="usernameInput">Username:</label>
<input type="text" id="usernameInput" onChange={handleChange} value={value}/>
</div>
<div style={{color:'red'}}>{error}</div>
<div>
<button type="submit" disabled={Boolean(error)}>Submit</button>
</div>
</form>
)
}
kent는 form의 input에 id를 사용하는 것을 좋아함.
label도 htmlFor와 id를 이용하여 사용
리액트는 실제 event 객체가 아닌 SyntheticEvent라는 객체를 성능상 문제로 사용함.
event.nativeEvent로 실제 이벤트 객체에 접근 가능
error state를 event.target.value로 검증할 수 있지만,
setState를 이용하여 사용자가 애초에 입력할수 없도록 할 수도 있다.
또한 kent는 useRef를 별로 좋아하지 않는다 함.
반응형
'FrontEnd' 카테고리의 다른 글
[Epic React] useState에서 useReducer로 (0) | 2021.12.03 |
---|---|
NestJs 관련 학습 컨텐츠 소개 (0) | 2021.12.03 |
[Epic React] React.createElement, jsx와 바벨 (0) | 2021.11.30 |
[Epic React] Dom Api로 비동기 렌더링 (0) | 2021.11.30 |
[TypeORM] 관계 심화 (1) | 2021.11.02 |