Open beecomci opened 2 years ago
++
or --
const [counter, setCounter] = React.userState(0);
onClick() {
setCounter(counter + 1);
}
// 증감 연산자는 counter에 값을 재할당하므로 const인 counter에서는 read-only 오류 발생
onClick() {
setCounter(counter++);
}
SyntheticBaseEvent
임을 확인 할 수 있다. onClick
, onChange
등을 통해서 핸들링 할 수 있는 이벤트 객체는 브라우저 네이티브 이벤트 객체가 아닌 한번 감싼 React 고유의 이벤트 객체 -> SyntheticEvent
Event Pooling
event.persist()
: 비동기 동작이 수행된 이후에도 데이터가 남아있어 이벤트 객체를 사용 할 수 있지만, React v17 이후부터는 더이상 SyntheticEvent가 풀링되지 않기 때문에 아무런 동작하지 않음
📌 Why React
react, react-dom
📌 VanillaJS vs ReactJS
1. 처리 방식의 차이
addEventListener
대신 React에서 element의 property로 event 등록 가능2. createElement 대신 JSX로 더 손쉽게!
Babel
을 사용해서 다시 createElement 형태로 변환 필요 #3. 컴포넌트 안에 다른 컴포넌트 넣기
Title()
처럼 호출하지 않음. JSX만의 규칙이 있음 !<Title />
처럼 마치 HTML 태그인양 호출해줌📌 state
state 세팅
Unit Conversion
for, class...
는 JS 용어로 reserved 되었기 때문에JSX
에서 사용 불가minutes(amount)
state를 update 시키고 싶다면 ? -> change 이벤트 사용Unit Conversion + select unit
📌 props
Why need props ?
Btn({text: "confirm", color: "white"})
와 같이 전달된다React Memo
React.memo(Component)
로 Component의 Memorized 버전을 만들어서 부모의 state가 변경되었지만 props는 변경되지 않아 re-render될 필요가 없을 때 re-render되지 않도록 성능 최적화를 시켜줄 수 있음Prop Types
PropTypes
라는 패키지가 있는데 내가 어떤 유형의 prop을 받고 있는지 체크해줌 -> 만약 Typescript 사용중이라면 패스해도 될 듯isRequired
로 해당 prop을 필수로 받을건지도 체크 가능📌 CRA
설치 방법
CSS Module
Button.module.css
코드를 JS 객체 형태로 변환시켜줌module
을 붙일 것📌 Effects
Why need Effects ?
useEffect(EffectCallback, DependencyList)
: 무언가 변화할 때 특정 코드가 실행되도록 설정 가능 / 언제 코드가 실행될지 설정 가능Cleanup function
Cleanup function