컴퓨터 공학에서의 side effect란
함수의 로컬 상태를 함수 외부에서 변경하는 경우, side effect가 발생했다고 한다.
이 개념을 react에 적용하면, function component 외부에서 로컬 상태의 값이 변경되는 것이 side effect라고 할 수 있다.
흔한 경우로 비동기 처리가 있을 것이다.
즉, react에서 side effect란, 리액트 컴포넌트가 화면에 렌더링 된 이후에 비동기적으로 처리되어야하는 부수적인 효과들을 side effect라고 일컫는다.
그럼 모든 비동기 로직은 useEffect에 들어가야하는가?
아마 그럴 수도 있을 것 같다. (내 생각)
만약, 어떤 버튼이 눌렸을때 어떤 비동기 로직이 트리거되어야한다면, 로컬상태로는 해당 버튼이 눌렸는지에 대한 상태를 가지고있고, 상태가 변경되면 비동기로직을 useEffect내에서 수행하는 방식으로 하는것도 있을 것 같다.
하지만 이렇게 되면 useEffect로직이 많아지는데. 그러면 라이프 사이클이 꼬일위험도 높은것 같다.
무조건 비동기로직을 useEffect에 넣는다기보단, 어떤 특정 상태가 변경되었을때 비동기 로직을 수행하고 싶을때 useEffect를 사용한다는게 맞는 것 같다.
위 예시처럼 어떤 버튼이 눌렸을때 비동기로직이 동작해야하는 경우
는 매 렌더링마다 비동기 로직이 실행되는 것이 아니고, 특정 조건에 트리거 되는 것이기 때문에 useEffect에 선언할 필요가 없다.
'개발 > FrontEnd Interview' 카테고리의 다른 글
z-index 쌓임 맥락 (0) | 2021.09.02 |
---|---|
nullish coalescing operator (||와 ?? 차이) (0) | 2021.08.22 |
Prototype으로 상속을 구현해보세요. (0) | 2021.08.22 |
general function vs arrow function (0) | 2021.08.22 |
자바스크립트가 Prototype 기반 언어라서 얻는 이점은? (0) | 2021.08.22 |