React - Context API

BeomDev·2023년 5월 17일
0
post-thumbnail
post-custom-banner

Context API

전역에서 데이터를 관리할 수 있도록 하는 리액트 내장 기능

props driling을 통해 컴포넌트 간에 데이터를 전달할 수 있지만 프로젝트의 규모가 커지게 되면 불필요한 props driling이 발생할 수 있다.

이때 Context API를 사용해 전역에서 데이터를 관리하고 사용할 수 있도록 하면 불필요한 props driling이 발생하는 것을 방지할 수 있다.

props로 데이터를 전달하는 것이 아닌 Context API로 컴포넌트간에 값을 전달할 수 있다.

Context API는 전역에 Context를 생성해 모듈에서 값을 가져와 사용할 수도 있고

Context.jsx

const UserInfo = createContext({name: "choi"})
export {UserInfo}

Component.jsx

import {UserInfo} from "./Context.jsx"

function Component() {
  return (
    <Context.Consumer>
      {(value) => {코드...}}
    </Context.Consumer>
  )
}

Provider로 직접 Consumer에 값을 전달할 수도 있다.

또는 useContext 훅을 사용해 더 편리하게 값을 전달할 수도 있다.

Context.Provider

Context 객체의 Provider 컴포넌트를 사용해 값을 제공할 수 있다.
데이터를 제공하고자 하는 컴포넌트의 상위에 위치한다.

function App(){
  return(
    <UserInfo.Provider value={{name: "choi", age: "20"}}>
    	<User/>
    </UserInfo.Provider>
  )
}

Context.Consumer

Context 객체의 값을 소비할 수 있는 컴포넌트
Provider 컴포넌트로부터 제공된 Context 값을 제공받거나 모듈에서 값을 import해 사용할 수 있다.
value를 인자로 받는 함수를 자식으로 가진다.

function User(){
  return(
    <UserInfo.Consumer>
      {(value) => {
        <p>{value.name}, {value.age}</p>
      }}
    </UserInfo.Consumer>
  )
}

Context를 생성하게 되면 전역 공간을 사용하는 것이기 때문에 반드시 필요한 데이터가 아니라면 사용을 최소화 하는것이 좋다.

post-custom-banner

0개의 댓글