side effect
: 함수 내에서 어떤 구현이 함수 외부에 영향을 끼치는 경우
pure function
: 함수의 입력만이 함수의 결과에 영향을 주는 함수
React 컴포넌트의 props & states의 동작 자체에서는 side effect가 발생하지 않지만, api, ajax를 사용하는 경우 side effect에 노출됨
++ 관련 질문
Q. Math.random()은 순수 함수가 아닙니다. 왜일까요?
A. 순수함수의 조건으로 같은 인자를 전달할 경우 같은 결정을 보장해야하지만, Math,random()은 난수적인 결과를 반환하기 때문
Q. 어떤 함수가 fetch API를 이용해 AJAX 요청을 한다고 가정해 봅시다. 이 함수는 순수 함수가 아닙니다. 왜일까요?
A. AJAX 요청시 서버와의 통신은 서버의 상태, 네트워크등의 이유로 원하는 콘텐츠가 페이지에 적용될 수도, 서버와의 통신 실패, 잘못된 데이터등의 결과가 발생할 수 있기 때문에 같은 결과를 보장하지 못하기 때문
: 페이지가 새롭게 랜더링 되는 경우(state 변경시, 첫 랜더링시) 발생되는 side effect를 관리할 수 있게 해줌
- 첫 번째 인자로 관리할 함수(작업)을 넘겨주고, depency array 배열로 state 값들을 넘겨주는데 이는 side effect 발생 조건으로 해당 states 변경시 side effect 작업이 동작함
-외부: 필요한 데이터를 서버에 추출한해 받아오도록 요청해 사용,
=> 필요한 데이터만 받아오며, 처리 또한 클라이언트는 구현할 필요가 없어 클라이언트가 가벼워지지만, 해당 부담을 모두 서버가 감당해야 함