ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ createContext๋ ๋ฌด์์ผ๊น์?
**createContext**๋ React์์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์์.
์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ชจ → ์์ → ์์์ฒ๋ผ ์ฌ๋ฌ ๋จ๊ณ๋ก ์ ๋ฌํด์ผ ํ ๋, ์ด๋ฅผ ๋จ์ํํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๐ ๋น์ ๋ก ์ดํดํ๊ธฐ: ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ ์ด์ผ๊ธฐ
์ฌ๋ฌ๋ถ์ด ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ์์ ์ผํ๋ค๊ณ ์๊ฐํด ๋ด ์๋ค. ๐
- ๊ธฐ๋ณธ ์ ๋ฌ ๋ฐฉ์: ์ง์ ์ ๋ฌํ๊ธฐ
- **์ฃผ๋ฐฉ์ฅ(๋ถ๋ชจ ์ปดํฌ๋ํธ)**์ด ์ฌ๋ฃ(๋ฐ์ดํฐ)๋ฅผ ์ค๋นํ๊ณ ,
- ์ง์A → ์ง์B → ์ง์C์๊ฒ ์์๋๋ก ์ ๋ฌํด์ผ ํด์.
- ์ค๊ฐ ์ง์๋ค์ด ๋งค๋ฒ ์ฌ๋ฃ๋ฅผ ๋ฐ์์ ๋ค์ ์ ๋ฌํด์ผ ํ๋๊น ๋ณต์กํ๊ณ ๋ฒ๊ฑฐ๋กญ๊ฒ ์ฃ ?
- createContext๋ฅผ ์ฌ์ฉํ๋ฉด?
- ์ฃผ๋ฐฉ์ฅ(๋ถ๋ชจ ์ปดํฌ๋ํธ)์ด **๋ชจ๋ ์ง์(๋ชจ๋ ์ปดํฌ๋ํธ)**์๊ฒ ์ฌ๋ฃ๋ฅผ ํ ๋ฒ์ ๊ณต์ ํ ์ ์๋ **๊ณต์ ์ฐฝ๊ณ (Context)**๋ฅผ ๋ง๋ค์ด ์ค๋๋ค.
- ์ง์๋ค์ ์ฐฝ๊ณ ์์ ํ์ํ ์ฌ๋ฃ๋ฅผ ๋ฐ๋ก ๊บผ๋ด ์ธ ์ ์์ด์.
- ์ค๊ฐ ์ง์๋ค์ด ์ ๋ฌํ ํ์๊ฐ ์์ด์ ธ์ ํจ์ฌ ํธ๋ฆฌํด์ง๋๋ค!
๐ ๏ธ createContext ์ฌ์ฉ๋ฒ
์ด์ createContext๋ฅผ ์ฝ๋๋ก ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณผ๊ฒ์.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๊ณต์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
1. Context ๋ง๋ค๊ธฐ
๋จผ์ createContext๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๊ณต์ ์ฐฝ๊ณ ๋ฅผ ๋ง๋ญ๋๋ค.
import React, { createContext, useState } from 'react';
// Context ์์ฑ
export const UserContext = createContext(null);
export function UserProvider({ children }) {
const [user, setUser] = useState({ name: 'ํ๊ธธ๋', age: 25 });
return (
<UserContext.Provider value={{ user, setUser }}>
{children}
</UserContext.Provider>
);
}
์ค๋ช :
- createContext(null): UserContext๋ผ๋ ๊ณต์ ์ฐฝ๊ณ ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๊ธฐ๊ฐ์ null์ด์์.
- UserProvider: UserContext.Provider๋ฅผ ์ฌ์ฉํด์ user ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๊ณต๊ธ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์.
- value: value ์์ฑ์ ํตํด ๊ณต์ ํ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ user์ setUser๋ฅผ ์ ๊ณตํด์.
2. Context ๊ณต๊ธ์ ์ ์ฉํ๊ธฐ
UserProvider๋ฅผ ์ต์์ ์ปดํฌ๋ํธ์ ์ ์ฉํด์ ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
import React from 'react';
import { UserProvider } from './UserContext';
import UserProfile from './UserProfile';
function App() {
return (
<UserProvider>
<div>
<h1>Context ์์ </h1>
<UserProfile />
</div>
</UserProvider>
);
}
export default App;
์ค๋ช :
- **UserProvider**๋ก ์ฑ ์ ์ฒด๋ฅผ ๊ฐ์ธ์ค๋๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๊ฐ UserContext์ ์ ๊ทผํ ์ ์๊ฒ ๋ผ์.
3. Context ์ฌ์ฉํ๊ธฐ
์ด์ ํ์ ์ปดํฌ๋ํธ์์ useContext๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
import React, { useContext } from 'react';
import { UserContext } from './UserContext';
function UserProfile() {
const { user, setUser } = useContext(UserContext); // Context ์ฌ์ฉ
const handleChangeName = () => {
setUser({ ...user, name: '์ด์์ ' }); // ์ด๋ฆ ๋ณ๊ฒฝ
};
return (
<div>
<h2>์ฌ์ฉ์ ์ ๋ณด</h2>
<p>์ด๋ฆ: {user.name}</p>
<p>๋์ด: {user.age}</p>
<button onClick={handleChangeName}>์ด๋ฆ ๋ณ๊ฒฝ</button>
</div>
);
}
export default UserProfile;
์ค๋ช :
- useContext(UserContext): UserContext์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด setUser๋ฅผ ์ฌ์ฉํด user์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๊ณ ํ๋ฉด์ ๋ฐ์ํฉ๋๋ค.
๐ ๊ฒฐ๊ณผ ํ๋ฉด
- ํ๋ฉด์ ์ด๋ฆ๊ณผ ๋์ด๊ฐ ํ์๋ฉ๋๋ค.
- "์ด๋ฆ ๋ณ๊ฒฝ" ๋ฒํผ์ ๋๋ฅด๋ฉด ์ด๋ฆ์ด **"์ด์์ "**์ผ๋ก ๋ฐ๋๋๋ค.
๐ createContext๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ์
- ์ค๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์น์ง ์์๋ ๋ผ์
- ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋จ๊ณ๋ก ์ ๋ฌํ ํ์ ์์ด ํ์ํ ๊ณณ์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ด์.
- ์ฝ๋๊ฐ ๊น๋ํด์ ธ์
- props๋ฅผ ๊ณ์ ์ ๋ฌํ๋ ๋์ Context๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํด์ง๋๋ค.
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ์ ์ง
- ์ค์์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋๊น ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ ์ ์์ด์.
๐ ๋ง๋ฌด๋ฆฌ
React์ **createContext**๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์ ๋๋ค.
- **"๊ณต์ ์ฐฝ๊ณ "**๋ฅผ ๋ง๋ค์ด์ ํ์ํ ์ปดํฌ๋ํธ๊ฐ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๋ค ์ธ ์ ์์ด์.
- useContext๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด ์ฐ๋ ๊ฒ๋ ์์ฃผ ๊ฐ๋จํฉ๋๋ค.
'web > react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
lazy (0) | 2024.12.16 |
---|---|
forwardRef (0) | 2024.12.16 |
cache (0) | 2024.12.16 |
act (0) | 2024.12.16 |
[React] Typescript #01 (0) | 2024.02.22 |
- Total
- Today
- Yesterday
- react hook
- ๋ฒ ํ
- useRef
- react dom hook
- experimental_taintuniquevalue
- preconnect
- ๋ฐ์ดํฐ์ ์ง
- useinsertioneffect
- useformstatus
- react dom
- ์ต์ ๋ฐ์ดํฐ
- Store
- ์ํ๊ด๋ฆฌ
- usedeferredvalue
- Nextjs
- experimental
- Props
- useid
- react
- finddomnode
- experimental_taintobjectreference
- ์ ์ฅ์
- dns-prefetch
- component
- flushsync
- prefetchdns
- ์ธ๋ถํฐํธ
- state
- ์คํ์
- zustand
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |