-
React - Context API(전역 값 관리)React 2020. 9. 13. 20:00
이전 코드들에서 UserList는 다리 역할만 하고 있음
User 컴포넌트로 onRemove와 onToggle을 전달하기 위해서
UserList컴포넌트에선 쓰지 않지만 내부에 적어줬음
- UserList.js -
function UserList( { users, onRemove, onToggle }){ // 여기도 return ( <div> { users.map( (user) => ( <User user={user} key={user.id} onRemove={onRemove} // 여기랑 onToggle={onToggle} // 여기 /> ) ) } </div> ) }
Context API 사용하면, 이렇게 넘겨 받지 않아도 바로 User컴포넌트까지 전달할 수 있다.
본 예제 적용하기 전에
간단한 예제로 테스트
1. ContextSample.js 생성
- createContext와 useContext 선언
import React, { createContext, useContext } from 'react'; function Child({ text }) { return <div>안녕하세요? {text}</div> } function Parent({ text }) { return <Child text={text} /> } function GrandParent({ text }) { return <Parent text={text} /> } function ContextSample({ text }) { return <GrandParent text='Good' /> } export default ContextSample;
2. index.js에서 컴포넌트 실행확인
... import * as serviceWorker from './serviceWorker'; import ContextSample from './ContextSample'; ReactDOM.render( <React.StrictMode> <ContextSample /> </React.StrictMode>, ...
3. Context API 사용
- ContextSample.js -
Child 함수 내부 수정, MyContext 변수 선언
import React, { createContext, useContext } from 'react'; const MyContext = createContext('defaultValue'); function Child() { const text = useContext(MyContext); return <div>안녕하세요? {text}</div> }
- text의 값이 정해지지 않았기 때문에 defaultValue라고 뜬다.
4. 값 설정하기
가장 상위에 있는 컴포넌트로 가서
MyContext 안에 Provider라는 컴포넌트 있음 -> 이거 사용해서 감싸주고 -> value값 넣어주면 됨
function ContextSample() { return ( <MyContext.Provider value="Good"> <GrandParent text='Good' /> </MyContext.Provider> ) }
text 변수에 대한건 모두 지워도 된다.
5. value값 유동적으로 변환시키기
1) useState선언
import React, { createContext, useContext, useState } from 'react';
2) useState 적용
function ContextSample() { const [value, setValue] = useState(true); return ( <MyContext.Provider value={value ? "Good" : "bad"}> <GrandParent /> <button onClick={() => setValue(!value)}> CLICK ME </button> </MyContext.Provider> ) }
클릭 할 때마다 Good또는 Bad로 바뀜 마지막 코드
import React, { createContext, useContext, useState } from 'react'; const MyContext = createContext('defaultValue'); function Child() { const text = useContext(MyContext); return <div>안녕하세요? {text}</div> } function Parent() { return <Child/> } function GrandParent() { return <Parent/> } function ContextSample() { const [value, setValue] = useState(true); return ( <MyContext.Provider value={value ? "Good" : "bad"}> <GrandParent /> <button onClick={() => setValue(!value)}> CLICK ME </button> </MyContext.Provider> ) } export default ContextSample;
React - Userdispatch Context
React - Context API(전역 값 관리) 이전 코드들에서 UserList는 다리 역할만 하고 있음 User 컴포넌트로 onRemove와 onToggle을 전달하기 위해서 UserList컴포넌트에선 쓰지 않지만 내부에 적어줬음 - UserList.j..
startersdev.tistory.com
'React' 카테고리의 다른 글
React - Userdispatch Context (0) 2020.09.13 React - 커스텀 hook 만들기 (0) 2020.09.13 React - App 컴포넌트에서 useReducer사용 (0) 2020.09.11 React - useReducer (0) 2020.09.11 React - 컴포넌트 리렌더링 방지(React.memo) (0) 2020.09.11