모든 페이지에 있는 어떤 컴포넌트에서든 사용이 가능하다.
import React,{createContext} from 'react'
**export** const Usercontext = createContext()
const UserStore=(props)=>{
const users = {
name:'hey-hey',
job :'developer'
}
return (
<Usercontext.Provider value={users}>
{props.children}
</Usercontext.Provider>)
}
export default UserStore
createContext
라는 함수를 불러와서 실행시키면 비어있는 context가 반환된다.const Usercontext = createContext()
export
시켜준다.Context
에 넣고 싶은 값을 만든다.const users = { name:'hh',job:'devel'}
return
에 createContext
로 반환된 context
에는 provider
라는 것이 있다. 여기에 value
라는 이름으로 우리가 전달하고 싶은 값(객체형태) 로 넣어준다.props.children
을 사용해서 하위 컴포넌트를 렌더링 해준다.import UserStore from './store/users'
function App() {
return (
<UserStore>
<div className='App'>
...
</div>
</UserStore>
);
}
전체를 감싸주게 되면 모든 컴포넌트에서 사용이 가능하다.
사용하고 싶은 곳
import { useContext } from "react"
import {Usercontext} from "./store/users"
const UserCheck = ()=>{
const context = useContext(Usercontext)
console.log(context)
return (
<div>
<h1>{context.name}</h1>
<h1>{context.job}</h1>
</div>
)
}
export default UserCheck
const context = useContext(Usercontext)
context
안에 값이 저장이 되어 있다.import React,{createContext, useState} from 'react'
export const Usercontext = createContext()
export const setUserContext = createContext(()=>{})
const UserStore=(props)=>{
const [users,setUsers] = useState({
name:'hey-hey',
job :'developer',
age : 28
})
return (
<setUserContext.Provider value={setUsers}>
<Usercontext.Provider value={users}>
{props.children}
</Usercontext.Provider>
</setUserContext.Provider>
)
}
export default UserStore
setUserContext
를 만들어 준다 .export const setUserContext = createContext(()=>{})
state
를 만들때 setUsers
도 만들어준다.return
값에 setUserContext
로 제일 밖을 묶고 value
로 User
를 바꾸는 값을 보내준다.import { useContext } from "react"
import {Usercontext,setUserContext} from "./store/users"
const UserCheck = ()=>{
const context = useContext(Usercontext)
const setUsers = useContext(setUserContext)
console.log(context)
return (
<div>
<h1>{context.name}</h1>
<h1>{context.job}</h1>
<h1>{context.age}살</h1>
<button onClick={()=>setUsers({...context,age:context.age+1})} >나이먹기</button>
</div>
)
}
export default UserCheck
setUserContext
를 받아온 뒤 그 context
를 useContext
를 이용해 새로운 setusers
라는 함수를 만들어준다.