-
Notifications
You must be signed in to change notification settings - Fork 7
ContextApi
contextλ₯Ό μ΄μ©νλ©΄ λ¨κ³λ§λ€ μΌμΌμ΄ propsλ₯Ό λκ²¨μ£Όμ§ μκ³ λ μ»΄ν¬λνΈ νΈλ¦¬ μ 체μ λ°μ΄ν°λ₯Ό μ 곡ν μ μμ.
μΌλ°μ μΈ React μ ν리μΌμ΄μ μμ λ°μ΄ν°λ μμμ μλλ‘ (μ¦, λΆλͺ¨λ‘λΆν° μμμκ²) propsλ₯Ό ν΅ν΄ μ λ¬λμ§λ§, μ ν리μΌμ΄μ μμ μ¬λ¬ μ»΄ν¬λνΈλ€μ μ ν΄μ€μΌ νλ propsμ κ²½μ° μ΄ κ³Όμ μ΄ λ²κ±°λ‘μΈ μ μμ.
contextλ₯Ό μ΄μ©νλ©΄, νΈλ¦¬ λ¨κ³λ§λ€ λͺ μμ μΌλ‘ propsλ₯Ό λκ²¨μ£Όμ§ μμλ λ§μ μ»΄ν¬λνΈκ° μ΄λ¬ν κ°μ 곡μ ν μ μμ
contextλ₯Ό μ¬μ©νλ©΄ redux,mobx μμμ μ²λΌ μνκ΄λ¦¬λ₯Ό ν κ³³μμ ν μ μμ.
contextμ μ£Όλ μ©λλ λ€μν λ 벨μ λ€μ€ν λ λ§μ μ»΄ν¬λνΈμκ² λ°μ΄ν°λ₯Ό μ λ¬νλ κ².
contextλ₯Ό μ¬μ©νλ©΄ μ»΄ν¬λνΈλ₯Ό μ¬μ¬μ©νκΈ°κ° μ΄λ €μμ§λ―λ‘ κΌ νμν λλ§ μ¨μΌν¨.
- μ°λ¦¬ νλ‘μ νΈλ₯Ό μλ‘ λ€μλ©΄ host-pageμμ hostμ μ 보 μ¦ hostID, profile image, email, name λ±λ±μ μ 보λ host page λ΄μ μ 체μ μΈ μ»΄ν¬λνΈ μμμ μ¬μ©λ μ¬μ§κ° μκΈ° λλ¬Έμ μ μμΌλ‘ context μ€μ ν΄μ μ¬μ©νλκ² νΈν΄μ μ¬μ©.
//src/libs/hostContext.js
import React from "react";
const HostContext = React.createContext({});
const HostProvider = HostContext.Provider;
export { HostContext, HostProvider };-
리μνΈ hookμμλ Consumerλ₯Ό λ°λ‘ μ¬μ©νμ§ μκΈ° λλ¬Έμ μ μνμ§ μμ.
-
Context μ€λΈμ νΈμ ν¬ν¨λ React μ»΄ν¬λνΈμΈ Providerλ contextλ₯Ό ꡬλ νλ μ»΄ν¬λνΈλ€μκ² contextμ λ³νλ₯Ό μ리λ μν
Providerλ₯Ό Contextλ₯Ό μ¬μ©ν μ»΄ν¬λνΈλ‘ κ°μΌλ€. host app μ 체μμ μ¬μ©νκΈ° λλ¬Έμ μ°λ¦¬νλ‘μ νΈμμ app.jsλ₯Ό κ°μμ
//src/App/App.js
return (
<HostProvider value={hostInfo}>
<div className="App">
<Header />
<Nav />
{modal && <NewPollModal />}
<Content event={event} />
</div>
</HostProvider>
);- Providerμ valueλ₯Ό ν΅ν΄ νμ μ»΄ν¬λνΈλ€μκ² contextλ₯Ό μ 곡 ν μμμ
Providerλ‘ κ°μΌ μ»΄ν¬λνΈμ νμ μ»΄ν¬λνΈμμ contextλ₯Ό μ°Έμ‘°νμ¬ μ¬μ©ν μ μμ react hookμμλ κ°λ¨νκ² consumerλ‘ κ°μΈμ§ μκ³ useContextλ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό μ°Έμ‘° κ°λ₯ useContextλ₯Ό μ¬μ©νλ©΄ μμμμ κ°μ₯ κ°κΉμ΄ μ§μ μ΄λ£¨λ providerλ₯Ό μ°Ύμ κ·Έμ ν΄λΉνλ contextλ₯Ό μ°Έμ‘°.
//src/component/HeaderAccountAvata.j
import { makeStyles } from "@material-ui/core";
import Avatar from "@material-ui/core/Avatar";
import React, { useContext } from "react";
import { HostContext } from "../libs/hostContext";
function HeaderAccountAvata({ userName }) {
const host = useContext(HostContext);
console.log(host);
const useStyles = makeStyles({
headerAvatar: {
backgroundColor: "#FFF",
color: "#212529",
margin: "0.5rem",
"&:hover": {
color: "#FFF",
backgroundColor: "#69747f",
},
},
avatarImage: {
width: "2.5rem",
height: "2.5rem",
borderRadius: "15px",
},
});
const classes = useStyles();
const inner = userName.slice(0, 1);
return (
<Avatar className={classes.headerAvatar}>
<img className={classes.avatarImage} src={host.image}></img>
</Avatar>
);
}
export default HeaderAccountAvata;- μ°λ¦¬ νλ‘μ νΈμμ ν€λλΆλΆμ host profile imageλ₯Ό λ¨μκΈ° μν΄ μ¬μ© hostμ λν μ 보λ appμ΄ μμλ λ μλ²λ‘ λΆν° λ°κ³ μ΄λ createModal,hostModal λ± λ€μν κ³³μμ μ¬μ©νκΈ° λλ¬Έμ contextλ‘ μ¬μ©.
κΈ°ν
μ€κ³
κ°λ° λ° λ°°ν¬ νκ²½ μ€μ
λ°ν μλ£
λ°μΌλ¦¬ μ€ν¬λΌ
- 2019.11.05
- 2019.11.06
- 2019.11.07
- 2019.11.08
- 2019.11.11
- 2019.11.12
- 2019.11.13
- 2019.11.14
- 2019.11.15
- 2019.11.18
- 2019.11.19
- 2019.11.20
- 2019.11.21
- 2019.11.22
- 2019.11.25
- 2019.11.26
- 2019.11.27
- 2019.11.28
- 2019.12.03
- 2019.12.04
- 2019.12.09
- 2019.12.10
- 2019.12.11
- 2019.12.12
- 2019.12.13
- 2019.12.16
- 2019.12.18
- 2019.12.19
- 2019.12.20