
2021년 8월 3일에 작성된 문서 2번 입니다.
React 배운 내용을 정리했습니다.
let foo = 'hello';
function bar() {
foo = 'world';
}
bar(); // bar는 Side Effect를 발생시킵니다!
// 전역 변수 foo를 bar라는 함수가 수정하는 예제입
function upper(str) {
return str.toUpperCase();
// toUpperCase 메소드는 원본을 수정하지 않습니다 (Immutable)
}
upper('hello') // 'HELLO'
function SingleTweet({ writer, body, createdAt }) {
return <div>
<div>{writer}</div>
<div>{createdAt}</div>
<div>{body}</div>
</div>
}
useEffect는 컴포넌트 내에서 Side effect를 실행할 수 있게 하는 Hook useEffect(함수)
useEffect의 첫번째 인자는 함수입니다. 해당 함수 내에서 side effect를 실행하면 됩니다. 이 함수는 다음과 같은 조건에서 실행됩니다.

매 번 새롭게 컴포넌트가 렌더링될 때 Effect Hook이 실행
useEffect의 두 번째 인자는 배열입니다. 이 배열은 조건을 담고 있습니다. 여기서 조건은 boolean 형태의 표현식이 아닌, 어떤 값의 변경이 일어날 때를 의미합니다. 따라서, 해당 배열엔 어떤 값의 목록이 들어갑니다. 이 배열을 특별히 종속성 배열이라고 부릅니다.
proverbs)effect)count)한편, 카운트를 올리는 버튼은 컴포넌트의 상태가 바뀌고 업데이트 되지만, 아무리 버튼을 눌러도 effect 함수는 실행되지 않습니다. 왜냐하면, 종속성 배열에는
filter만 존재하고,count는 존재하지 않기 때문입니다.
useEffect(함수, [종속성1, 종속성2, ...])useEffect의 두 번째 인자는 종속성 배열. 배열 내의 어떤 값이 변할 때에만, (effect가 발생하는) 함수가 실행.
만일 종속성 목록에 아무런 종속성도 없다면 어떤 일이 발생할까요? 달리 말해, 두 번째 배열을 빈 배열
[]로 둘 경우에는 무슨일이 발생할까요? 두 번째 인자를 아예 안넘기는 것과 어떻게 다를까요?1. 빈 배열 넣기
useEffect(함수, [])2. 아무것도 넣지 않기 (기본 형태)
useEffect(함수)
(2번) : 기본 형태의 useEffect는 컴포넌트가 처음 생성되거나, props가 업데이트되거나, 상태(state)가 업데이트될 때 effect 함수가 실행.
(1번) : 빈 배열을 useEffect의 두 번째 인자로 사용하면, 이 때에는 컴포넌트가 처음 생성될때만 effect 함수가 실행.
Written with StackEdit.