티스토리 뷰
1) React.createContext(): 데이터를 저장할 공간 만들기
const MyStore = React.createContext();
2) 데이터를 가져다 쓰는 방법
- Context.Provider
데이터를 주입하기
Provider는 Context를 구독한 컴포넌트들에게 데이터가 변했다고 알려준다.
여러 컨텍스트가 있다면 중첩해서 사용해도 된다.
<MyStore.Provider value={state}>
<Component1 />
<Component2 />
</MyStore.Provider>
- Context.Consumer
주입한 데이터를 구독하기
Consumer는 컴포넌트가 context를 구독하게 해준다.
function App() {
// Context의 Value는 App 컴포넌트에서 관리
const [name, setName] = useState("유정");
return (
<MyStore.Provider value={{ name, setName }}>
<MyStore.Consumer>
{(value) => {return <div>{value.name}</div>}}
</MyStore.Consumer>
</MyStore.Provider>
);
}
Consumer는 위처럼 사용하지만 useContext()를 쓰면 굳이 쓰지 않아도 된다.
// MyStore.Provider를 찾는데 성공할 컴포넌트
const SomeComponentInProvider = () => {
const { name, setName } = useContext(MyStore);
return (
<div>
{name}
<button onClick={() => setData("perl")}>바꾸기</button>
</div>
);
}
3) 데이터 수정하기
context를 만들 때 값과 함수를 만든 이유는 값은 가져다 쓰기 위함이고 함수는 값을 고쳐쓰기 위함이다.
import React, { useState, useContext } from "react";
// Context를 만들기
const MyStore = React.createContext();
const MyStoreConsumer = () => {
const { name, setName } = useContext(MyStore);
return (
<div>
{name}
<button onClick={() => setName("perl")}>바꾸기</button>
</div>
);
};
function App() {
// Context의 Value는 App 컴포넌트에서 관리
const [name, setName] = useState("유정");
return (
<MyStore.Provider value={{ name, setName }}>
<MyStoreConsumer />
</MyStore.Provider>
);
}
export default App;
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- null
- findindex
- redux-middleware
- 비교 연산자
- 참조형 데이터
- 얕은복사
- filter
- redux
- undefined
- 기본형 데이터
- 불변 객체
- find
- 타입변환
- EVERY
- redux thunk
- redux middleware
- 느슨한 타입(loosely typed)
- map
- redux-thunk
- some
- 동적(dynamic) 언어
- foreach
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함