React #15
Side Effect
컴퓨터 과학에서 함수가 결과값 이외에 다른 상태를 변경시킬 때 부작용(Side Effect)이 있다고 말한다 - Wiki_ko
부작용이라고 하면 안 좋은 의미로 들리지만
여기서는 꼭 부정적인 말은 아니다
let foo = 'hello';
function bar() {
foo = 'world';
}
bar(); // bar는 Side Effect를 발생
bar()
로 foo
의 값이 변경 되었기 때문
※ 순수 함수 (Pure Function)
오직 함수의 입력만이 함수의 결과에 영향을 주는 함수
입력으로 전달된 값을 수정하지 않는다
React의 함수 컴포넌트
기본적으로는 props
가 입력, JSX Element
가 출력인 순수 함수지만
실제 앱에서는 AJAX 요청이나 외부 API를 사용하는 경우가 많이 생긴다
= React의 입장에서, AJAX 요청이나 외부 API를 사용하는 것은
모두 SIDE EFFECT
Effect Hook
useEffect
컴포넌트 내에서 Side effect를 실행할 수 있게 하는 Hook
useEffect(함수, [비교할 값])
로 생겼다
함수 내에서 side effect를 발생시키면 된다
언제 useEffect
가 실행되나
[비교할 값]
이 없다면
매 번 새롭게 컴포넌트가 렌더링될 때 Effect Hook이 실행된다
- 컴포넌트 생성 후 처음 화면에 렌더링(표시)
- 컴포넌트에 새로운 props가 전달되며 렌더링
- 컴포넌트에 상태(state)가 바뀌며 렌더링
[비교할 값]
이 있다면
위의 조건 + [비교할 값]
이 변했을 때 Effect Hook이 실행
주의할 점
최상위 React 함수 내에서만 Hook을 호출
※ [비교할 값]
이 []
인 경우?
useEffect
가 실행 되는
- 컴포넌트 생성 후 처음 화면에 렌더링(표시)
- 컴포넌트에 새로운 props가 전달되며 렌더링
- 컴포넌트에 상태(state)가 바뀌며 렌더링
중에서
- 컴포넌트 생성 후 처음 화면에 렌더링(표시)
만 적용된다
처음 단 한 번, 외부 API를 통해 리소스를 받아오고 더이상 API 호출이 필요하지 않을 때에 사용
Reference
codestates: [React] 데이터 흐름의 이해와 비동기 요청 처리
Author And Source
이 문제에 관하여(React #15), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@alskfl/React-15저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)