02 React Hooks
- useContext
- useContext란
- 상태를 공유하는 context (상태 변경 시 모두 다시 랜더링)
- context는 App 안에서 전역적으로 데이터를 여러 컴포넌트끼리 쉽게 공유할 수 있는 방법 제공
- 상위 컴포넌트의 data가 필요한 하위 컴포넌트들은 useContext 훅을 사용하여 데이터를 받아온다.
- Provider로 부터 Consumer까지 value(state) 공유
- Provider의 자식들은 해당 context의 상태를 바로 접근 가능
- createContext → Context.Provider → Context.Consumer (useContext)
- import
- import { createContext } from ‘react’;
- import { useContext } from ‘react’;
- 사용
- 순서
- createContext
- const MyContext = createContext<MyContextProp>();
- Provider
- export const MyProvider = ({ children }): PropsWithChildren) ⇒ { … };
- useContext
- const useMyContext = () ⇒ useContext(MyContext);
- createContext
- 예시 1
-
import { createContext } from 'react'; export const MyContext = createContext({x: 1}); ---------------------------------------------- import { MyContext } from '../myContext'; … <MyContext.Consumer> { value => <h1>x: {value.x}</h1> } </MyContext.Consumer>
-
- 예시 2
-
export const MyContext = createContext(); render( <MyContext.Provider value={{변수}}> <App /> </MyContext.Provider> ); ---------------------------------------------- import { useContext } from ‘react’; const 변수 = useContext(MyContext);
-
- 순서
- useContext란
- useEffect
- useEffect란
- 컴포넌트가 랜더링 될 때 특정 작업(side effect)을 실행할 수 있도록 하는 것
- side effect란 컴포넌트가 랜더링 된 이후에 비동기로 처리되어야 하는 부수적인 효과
- componentDidMount 시점에 비동기로 실행 (alert, focus, sound 등 After DOM 처리)
- 함수형 컴포넌트에서 return JSX(render) 다음에 실행
- 정리(clean-up) 코드는 componentWillUnMount 시점에 실행되고, 의존 관계 배열(Dependency Array)가 비워져 있다면 1회만 실행 된다.
- 컴포넌트가 랜더링 될 때 특정 작업(side effect)을 실행할 수 있도록 하는 것
- import
- import { useEffect } from ‘react’;
- 사용
- useEffect(function, deps)
- function: 수행하고자 하는 작업
- deps: 검사하고자 하는 특정 값 배열이나 빈 배열
- useEffect(() ⇒ { console.log(’…’); }. []);
- 예시 1
- Login component에 로그인하라는 alert 띄우기
const Login = () => { … useEffect(() => { alert('로그인해주세요!'); return () => { // 정리(cleanup) 함수 alert('로그인 되셨어요'); }; }, []); }
- useEffect(function, deps)
- useEffect란
'교육 (Today I Learned) > Hanaro' 카테고리의 다른 글
[Hanaro] 28일차 / React (Hooks- useMemo, useReducer) (0) | 2024.02.25 |
---|---|
[Hanaro] 27일차 / React (Hooks- useEffect, useLayoutEffect, useCallback) (0) | 2024.02.23 |
[Hanaro] 25일차 / React (Hooks- forwardRef) (0) | 2024.02.21 |
[Hanaro] 24일차 / React (Hooks- useState, useRef) (0) | 2024.02.20 |
[Hanaro] 23일차 / React 시작하기 (0) | 2024.02.18 |