🐣 useReducer
, redux
와의 차이는!??
useContext
는 props 전달 시 컴포넌트 컴포넌트 컴포넌트 를 타고 갈 필요 없이 한 번에 전달을 해준다.useReducer
는 복잡한 컴포넌트 상태 로직을 리듀서 함수를 통해 관리할 수 있는 훅. 로직이 복잡해 보인다면 실행 함수들을 외부로 뺀다고 생각.redux
.redux
의 미니 버전이 useReducer
라고 생각.)createContext
로 생성해주고useState
로 작성 해준다..Provider
를 붙여서 보내준다. 보낼 값은 props
로 작성.useContext
로 받아서 사용한다.//만들고
const ThisContext = createContext();
const [user, setUser] = useState("Dana")
<ThisContext.Provider value={user}>
//사용하기
const user = useContext(ThisContext)
return(
<h2>{`Hello ${user} again!`}</h2>
)
import React from 'react';
import { useState, createContext, useContext } from "react"
import './style.css';
//-- createContext : 값 제공할 때
//보낼 값들을 모두 작성해주면 된다.
//-- useContext : 받아서 사용할 때때
//UserContext 변수명으로 createContext() 생성
const ThisContext = createContext();
//user 초기값 작성
export default function Component1() {
const [user, setUser] = useState("Dana")
return (
<div>
{/* 값을 제공하는 쪽 = Provider */}
<ThisContext.Provider value={user}>
<h1>Component 1 : 여기서 제공</h1>
<h1>{`Hello ${user}!`}</h1>
<Component2 />
</ThisContext.Provider>
</div>
);
}
function Component2() {
return (
<>
<h1>Component 2</h1>
<Component3 />
</>
);
}
function Component3() {
return (
<>
<h1>Component 3</h1>
<Component4 />
</>
);
}
function Component4() {
return (
<>
<h1>Component 4</h1>
<Component5 />
</>
);
}
function Component5(){
{/* 여기서 ${user}를 받아올 때 useContext에서 제공한 값을 사용하는 거기 때문에 useContext(받아올 값) */}
const user = useContext(ThisContext)
return(
<>
<h1>Component 5 : 받아서 사용</h1>
<h2>{`Hello ${user} again!`}</h2>
</>
)
}
import React from 'react';
import { useState, createContext, useContext } from "react"
import './style.css';
//-- createContext : 값 제공할 때
//보낼 값들을 모두 작성해주면 된다.
//-- useContext : 받아서 사용할 때
//UserContext 변수명으로 createContext() 생성
const ThisContext = createContext();
//user, age 초기값 작성
export default function Component1() {
const [user, setUser] = useState("Dana")
const [age, setAge] = useState(22)
return (
<div>
{/* 값을 제공하는 쪽 = Provider */}
<ThisContext.Provider value={{ user, age }}>
<h1>Component 1 : 여러개 보낼 때</h1>
<h1>{`Hello ${user}! i'm ${age}`}</h1>
<Component2 />
</ThisContext.Provider>
</div>
);
}
function Component2() {
return (
<>
<h1>Component 2</h1>
<Component3 />
</>
);
}
function Component3() {
return (
<>
<h1>Component 3</h1>
<Component4 />
</>
);
}
function Component4() {
return (
<>
<h1>Component 4</h1>
<Component5 />
</>
);
}
function Component5(){
{/* 여기도 동일하게 작성. 여러 개니까 객체구조분해 형태로 가져온다. useContext(받아올 값) */}
const { user, age } = useContext(ThisContext);
return(
<>
<h1>Component 5 : 받아서 사용</h1>
<h1>{`Hello ${user}! i'm ${age}`}</h1>
</>
)
}