-
React - context API를 사용해보자!Front-end/React 2021. 9. 7. 14:27반응형
리액트에서 state를 관리하는 방법은 다양하다.
리액트는 단방향 워터풀 방식으로 부모에서 자식에게 props를 통해서 전달되어, 데이터 흐름이 일정하다.
그 말은 흐름을 비교적 알기 쉬워서 이해가 빠르게 된다는 장점도 가질 수 있다.
대표적으로 Redux, Mobx와 같은 것을 활용하여 state를 관리하게 되는데, Redux는 한번 사용하려면 귀찮다? 혹은 까다롭다? 라는 것이 따라붙는다.
큰 데이터도 아니고, 어떤 한 부분만 전달 하고 싶은 경우 굳이 Redux나 Mobx를 사용할 필요 없이 contextAPI를 활용할 수 있을 것이다.
특히 요즘은 contextAPI를 잘 만들어놔서 많은 경우 사용하기 좋다고 할 수 있다.
전체적으로 데이터를 전달해야하는 경우 Redux, Mobx를 사용하면 좋을 것이고, 어떤 부분에만 전달하고 싶다면 contextAPI를 활용해볼 수 있을 것이다.
그렇다면 contextAPI는 어떻게 사용 할 수 있을까?
context API 공식문서에 따라가보자!
context API 공식문서 : https://ko.reactjs.org/docs/context.html
설명에 따르면, context는 글로벌하게(전역적으로) 데이터를 공유 하도록 만든 방식이다.
context를 사용하게 되면 중간에 있는 Elements에게 props를 넘겨주지 않아도 된다.
이는 네스팅 된 많은 컴포넌트에게 데이터를 전달하기 쉽도록 만들어졌찌만, 컴포넌트를 재사용하기가 어려워지므로 꼭 필요할 때만 쓰라고 되어있다.
그렇다면 이제 어떻게 사용하는지 알아보자!
1. 우선 context 라는 폴더를 만들고 그 안에 ProfileContext.jsx 라는 파일을 만들어주자!
2. ProfileContext.jsx 안에 createContext를 만들자!
import React, { createContext } from "react"; const ProfileStore = createContext(); const ProfileContext = (props) => { const obj = { name: "Patrick", age: 12, job: "frontend developer", }; return ( <ProfileStore.Provider value={obj}> {props.children} </ProfileStore.Provider> ); }; export { ProfileStore, ProfileContext };
이렇게 만들게 된다.
이 후 사용하는 가장 외부에서 Wrapping을 해주게 되는데 아래와 같이 감싸준다.
import Profile from "./components/Profile"; import { ProfileStore } from "./context/ThemeColors"; function App() { return ( <ProfileStore> <Profile /> </ProfileStore> ); } export default App;
그리고 사용하는 곳(Profile.jsx)로 가서 사용해보자.
import React, { useContext } from "react"; import { ProfileContext } from "../context/ProfileContext"; const Profile = () => { const profile = useContext(ProfileContext); return ( <div> {profile.name} // "Patrick" {profile.age} // "12" {Profile.job} // "frontend developer" </div> ); }; export default Profile;
그래서 처음 만들 때 createContext를 사용해주고, 사용할 때는 useContext를 사용해준다는 점만 기억을 하면 될 것 같다.
context 파일에서 정보를 감싸고 있는 부분으로 wrapping을 해주고, createContext를 변수로 하는 것을 사용해서 정보를 꺼내어 사용하면 된다!
반응형'Front-end > React' 카테고리의 다른 글
리액트 파일 업로드, 파일 다운로드 File upload, download with javascript react (2) 2022.06.24 React 상태 관리 : Recoil 로 해보자! (0) 2021.12.04 캘린더 날짜 바꾸기 - Welcome to Data structure (0) 2021.09.15 portals을 이용한 리액트 모달창(modal) 만들기 (0) 2021.07.06 리액트로 기간(날짜) 지정하기 date range ( react-flatpickr ) (0) 2021.07.05