Effect(Side Effect)
Main Job: Render UI & React to User Input
Side Effects: Anything Else, 화면에는 직접적으로 나타나지 않는 것들
useEffect() Hook
useEffect() Hook
useEffect(() => { ... }, [ dependencies ])
라이프사이클을 대체하는 훅
함수 컴포넌트에서는 특정 데이터에 대해서 라이프사이클이 진행
클래스 컴포넌트에서는 componentWillMount
, componentDidMount
, componentDidUpdate
, componentWillUnmount
를 컴포넌트 당 한 번씩만 사용했다면
useEffect
는 데이터의 개수에 따라 여러 번 사용
useRef
를 활용한다면 useEffect
에서 componentDidUpdate
효과를 낼 수 있다.
componentDidMount
를 무시하는 방법useEffect에서 cleanup 함수 사용은
useReducer() Hook
useState와 비슷하게 상태관리하는 훅, 하지만 더 복잡한 상황일 때 유용
state가 많을 경우, state를 하나로 합치는 역할
const [state, dispatch] = useReducer(reducerFn, initialState, initFn)
컴포넌트에서 관리하는 state 수가 적다면 useState로 관리하는 것이 더 간편하지만
컴포넌트에서 관리하는 state가 많고, state를 변경하는 함수가 많다면 useState를 여러개 사용하는 것 보다 useReducer로 state를 더 편하게 관리할 수 있다.
Context(Context API)
Flux 패턴
프로젝트 안에서 전역적으로 사용 할 수 있는 값을 관리
이 값은 함수일수도 있고, 어떤 외부 라이브러리 인스턴스일수도 있고 심지어 DOM 일 수도 있다.
Context에 저장된 데이터를 사용하기 위해서는 공통 부모 컴포넌트에 Context의 Provider를 사용하여 데이터를 제공
Context 사용법
React.createContext()
Context 를 만들면, Context 안에 Provider 라는 컴포넌트가 들어있는데 이 컴포넌트를 통하여 Context 의 값을 정할 수 있다.