728x90
"사이드 이펙트"라는 용어들을 종종 듣게 되었다.
사이드 이펙트는 번역하면 "부작용"인데, 음 도대체 어쩌라는거지... 뭔소리지.. 라는 의문을 가졌다.
Side-effect란 보통 함수형 프로그래밍에서 주로 쓰이는 용어로 순수 함수와 다른말이다.
📌 Pure Function 순수함수
1. 함수의 리턴값은 예측 가능하며 동일하다
2. 함수 외부의 값이나 함수에 전달된 값을 변경하지 않는 함수
위의 이미지처럼 addNum에 a와 b를 넣었을때 리턴되는 값은 3이라는걸 예측할 수 있다. 이를 순수 함수라고 부른다.
이와 반대되는 Side-effect는 무엇일까?
📌Side-effect 예측되지 않은 것
Side-effect는 항상 같은 결과를 리턴하지 않는, 즉 예측할 수 없는 특징을 가지고 있다.
예를들어 위의 이미지처럼 random을 추가하게 되면 addNum의 리턴값은 예측할 수 없다.
Side effect의 예시는 아래와 같다.
- 백엔드에 API request 요청 (axios, fetch)
- 브라우저 API와 상호작용 (document, window의 직접적인 사용)
- setTimeout, setInterval
📌class 기반의 side-effect
- componentDidMount()
- componentDidUpdate()
React Hook이 나오기 전까지는 componentDidxxx를 통해서 React에서 side-effect 처리를 했다. 클래스 기반 컴포넌트에서 side-effect 처리가 매우 불편했다고 하던데, 나는.. 클래스 컴포넌트가 익숙하기에 너무 옛날 개발자인가 싶었다.
아무튼 다음 시간에는 React Hook의 useEffect에 대해서 알아보겠다.
참고자료
728x90
'Frontend > React' 카테고리의 다른 글
[React] 클래스형 컴포넌트의 생명주기(LifeCycle) (0) | 2023.07.01 |
---|---|
[React Native] 'react-native-svg' Install 오류 조치 방법 (Could not resolve dependency (0) | 2021.03.17 |
[React-Native] react-navigation V5 (네비게이션) / Route 분기하기 (0) | 2020.07.30 |
React-Native [카카오 로그인 연동] Hash key 구하기 (1) | 2020.07.09 |
React-native 시작하기 [react-native run-android 오류] (0) | 2020.07.08 |