리액트 컴포넌트 내부에서 onSubmit 등의 이벤트 핸들러를 화살표함수로 구현하는 이유 :
일반 함수형으로 표현하면 this는 보통 전역객체를 참조하기 때문.
function getNumbers(){
console.log('getNumbers') // 밑에서 Lotto 컴포넌트가 계속 렌더링되기 때문에 계속 호출된다.
...계산 로직
}
const Lotto = () => {
const [winNumbers, setWinNumbers] = useState(getNumbers())
...
}
// 해결법
// useMemo를 이용해서 함수 결과값을 기억하도록!
const Lotto = () => {
const lottoNumbers = useMemo(()=> getNumbers(),[])
const [winNumbers, setWinNumbers] = useState(lottoNumbers)
...
}