๋ด์ผ๋ฐฐ์์บ ํ D-52 (12์ฃผ์ฐจ)
๐To Do List
* ๊ฐ์: ๋ฆฌ์กํธ ์ ๋ฌธ 2์ฃผ์ฐจ ๐ค
* UX์ง์ค๋ฐ: โ ๋ฌธ์ ํด๊ฒฐ โ
01 ๊ฐ์: ๋ฆฌ์กํธ ์ ๋ฌธ 2์ฃผ์ฐจ
โ๏ธprops
= ์์ฑ
= ๋ถ๋ชจ → ์์ ๋ฐ์ดํฐ ์ ๋ฌ ์ ์ฌ์ฉ (์์ → ๋ถ๋ชจXXXX)
1) ์์์ ์๋๋ก
2) ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ทจ๊ธ, ์์์ด ๋ณ๊ฒฝ ๋ชปํจ.
`` : ๋ฐฑํฑ. ๋ฌธ์์ด ์ธ๋ ์ฌ์ฉ (ํค๋ณด๋ ํญ๋ฐ ์์์์.. ์ฒ์์ ๋ชฐ๋๋ค)
import React from "react";
function App() {
return <Mother />;
}
function Mother() {
const myName = "์ต";
return <Child lastName={myName} />;
}
function Child(p) {
console.log("props=>", p);
const name = "๋ฅดํ";
return (
<div>
<p>{`๋ด ์ด๋ฆ์ ${p.lastName} ${name}์
๋๋ค.`}</p>
</div>
);
}
export default App;
์ด๋ ๊ฒ ํ์ ๋ ๋ถ๋ชจ์์ ์์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ ์ ์๊ณ ,
์ถ๋ ฅ์ ์ด๋ ๊ฒ!
ํ์ง๋ง ๊ฐ์๋ด์ฉ๋ง์ผ๋ก ๋ฌด์จ ๋ง์ธ์ง ์ดํด๋ฅผ ํ ์ ์์๋คใ ใ
ํํฐ๋๊ป ๊ฐ์ ์ด๊ฒ ๋ฌด์จ ๋ง์ธ์ง ์ดํด๋ฅผ๋ชปํ๊ฒ ๋ค ํ๋๋
๋ค๋ฅธ ์๊ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ผ๊ณ ํ์ จ๋ค.
๊ทธ๋์ ๋ค์ ๊ธฐ๋ณธ์ ์ธ ํจ์์ ๊ฐ๋ ๋ถํฐ ์๋ ค์ฃผ์ จ๋ค.
ํจ์๋ ์ธํ๊ณผ ์์ํ์ผ๋ก ์กด์ฌ๋ฅผ ํ๋ค.
์ํ๊ธฐ์ ์๋ฃ์๋ก ๋ง์ด ๋น์ ํ๋ค๊ณ ํจ.
์ํ๊ธฐ : ์ธํ/ ์๋ฃ์: ์์ํ
function A(parameter) { }
- parameter:๋งค๊ฐ๋ณ์(๊ฐ์ด ์๋ ๋ณ์)
- argument:์ ๋ฌ์ธ์
๋ฆฌ์กํธ์์๋ ๋ค์ด๋ฐ์ ๋๋ก ํด์ค์ผํ๋ค.
์ฝ๋ฉ์ ์ฝ๋ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ค์ด๋ฐ ์ ๋ฌ์ด ์ค์ํ๋ค.
ํํฐ๋๊ป์ ์ง์ ํด๋ณด๋๊ฒ ์ค์ํ๋ค๊ณ ํ์๋ฉด์
x์ y์ ๊ฐ์ ๋ํ๋ ํจ์ + ์ถ๋ ฅํ ์ ์๊ฒ ๋ง๋ค๊ธฐ๋ผ๋ ๋ฏธ์ ์ ์ฃผ์ จ๋ค.
์ฌ์ธ ๊ฒ ๊ฐ์๋๋ฐ ์๊ฐ๋ณด๋ค ์ด๋ ค์ ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋๋๊ฑฐ ์๋๊ฐ...?ใ ใ ใ ใ
์๋ชป๋ ๊ฑฐ ๊ฐ์ผ๋ฉด์๋ ํ๋ฆฐ๊ฒ ์๋ค๊ณ ๋๊ปด์ง...
์ด๋ฒ์ aiํํ ๋ฌผ์ด๋ดค๋ค.
import React from "react";
function App() {
const result = sum(2, 8);
return <div> ๋ต์ {result}์
๋๋ค. </div>;
}
function sum(x, y) {
return x + y;
}
export default App;
์ค์ ๋ต์ ์ถ๋ ฅํ๋ ๊ฒ๋ ์ ๋์์ ๋ฐ๋ก ํํฐ๋๊ป ๋ฌ๋ ค๊ฐ๋ค.
๊ทผ๋ฐ ์ด๊ฒ ์๋๊ฐ๋ณด๋ค..!!! ใ ใ
import React from "react";
function App() {
return <Sum x={4} y={10} />;
}
function Sum(props) {
return <div>{props.x + props.y}</div>;
}
export default App;
๊ทธ๋ ๊ฒ ๋ฐ๋ ๋ ์ ํํ ์ฝ๋๋ค.
์ปดํฌ๋ํธ์ ํจ์์ ์ฐจ์ด์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์๋ฉด์
์ปดํฌ๋ํธ๋ ์ฒซ๊ธ์๊ฐ ๋๋ฌธ์์ด๊ณ , parameter์ ์์๊ฐ ์๋ค! ๋ผ๊ณ ํด์ฃผ์ จ๋ค.
์ ๊ทผ๋ฐ ์ด๋ ๋จธ๋ฆฌ๊ตด๋ฆฌ๋๋ผ ์ฌ์ด ๊ฒ ์ดํด๊ฐ ์ ๋ ๋๋์ด์๋ค..ใ ใ ใ ใ
์ปดํฌ๋ํธ๋ ๋ซํ ํ๊ทธ๊ฐ ์๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ ํ๊ทธ ํ๋๋ก ๋ซ์๋ ๋๊ณ ,
์ค๊ดํธ๋ฅผ ์ง์ง ์ ์ด์ฉํด์ผํ๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
์ด๋ ๊ฒ ํ์ ๋๋ ์ ๋ชจ๋ฅด๋ ๊ฒ ๊ฐ์๊ฐ์ง๊ณ
ํํฐ๋๊ป ๋ค์ ํ ๋ฒ ๋ ๋ฌธ์ ๋ฅผ ๋ฌ๋ผ๊ณ ํ๋ค.
๊ทผ๋ฐ ์ด๋ฒ์ map์ ํ์ฉํ ๋ฌธ์ ๋ฅผ ์ฃผ์ จ๋ค.
1. ์ฌ๋ ์ด๋ฆ, ๋์ด, ์ ํ๋ฒํธ์
๋ ฅ๋ฐ๋ ์ปดํฌ๋ํธ → App ์ถ๋ ฅ๋ผ์ผํจ
2. App์์ ๋ฐฐ์ด๋ง๋ค์ด์ ๋ฐฐ์ด์ map๋๋ ค์ 1๋ฒ๊ณผ์ ์์ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ถ๋ ฅํ๊ธฐ.
์ด๊ฑฐ๊น์ง ์๋ฉด ๋ค ์๋๊ฑฐ๋ผ๋ฉด์ 1์๊ฐ ์์ ํ์ด์ฌ ๊ฒ์ ์ฝ์ํ๊ณ ๋ค์ ํธ๋์ค...
import React from "react";
function Information(p) {
const arr = [
{ ์ด๋ฆ: "ํ๊ธธ๋", ๋์ด: "35์ธ", ์ ํ๋ฒํธ: "010-1234-5678" },
{ ์ด๋ฆ: "ํ๊ธธ์", ๋์ด: "24์ธ", ์ ํ๋ฒํธ: "010-2345-6789" },
{ ์ด๋ฆ: "ํ๋ง๋ณต", ๋์ด: "30์ธ", ์ ํ๋ฒํธ: "010-9558-3005" },
{ ์ด๋ฆ: "๋๊ฑฐ๋ถ", ๋์ด: "12์ธ", ์ ํ๋ฒํธ: "010-1231-6666" },
];
const List = Information.map((person) =>
)
}
function App() {
return <Information />;
}
export default App;
ํํฐ๋์ ๊ธฐ๋์ ๋ค๋ฅด๊ฒ ํ์ด์๋ค.
ํํฐ๋๊ป์ ์ ๊ฐ๋ฅด์ณ์ฃผ์ จ๋๋ฐ ๋ด๊ฐ ๊ณ์ ์ดํด๋ฅผ ๋ชปํด์ ๋จธ๋ฆฌ๋ฅผ ์ ๋ ์ ๋ ๊ฐ๋ก์ ์ผ์๋ฉด์
๊ทธ๊ฒ ์๋์ผ. ์๋์ผ. ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ
์ฝ๋ฉ ๋๋ฌด ์ด๋ ต๋ค...
์ค๋ช ํด์ฃผ์ ๊ฒ๋ ์ด์ ๋จธ๋ฆฌ ๊ณผ๋ถํ๊ฐ ๋ผ์ ๋์ด์ ๋จธ๋ฆฌ์ ๋ฐํ์ง์์๋ค.
์๊น ์ค๋ช ํ์์์. ๋ญ๋ผ๊ทธ๋ฌ์ฃ ? ๋ผ๊ณ ๋ฌผ์ด๋ณด์ค๋๋
๊ทธ๋ฐ๊ฒ ์์๋? ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ
์ด๋กํ์ฃ ..........?
๊ฒฐ๊ตญ ํํฐ๋๊ป์ ๋ค ์ฝ๋๋ฅผ ์ ์ผ์๋ฉด์ ํ๋ํ๋ ์ค๋ช ํด์ฃผ์ จ๋ค.
์ดํด๋ชปํด์ ์ ๋ง ์์.
์ค๋ช ํด์ฃผ์ ๊ฒ ์ฝ๋๋ฅผ ๋ค์ ์ฝ๊ณ ์ ์ด๋ฐ ์ฝ๋๋ก ์ง์ฌ์ก๋์ง
์ค์ค๋ก ํ์ตํ๋ ์๊ฐ์ ๋ง์ง๋ง์ผ๋กํ๊ณ ๋๋๋ค.
props๋๋ฌด ์ด๋ ต๋คใ ใ ใ
๋ค์ props์ ๊ฐ๋ ๋ถํฐ ๋ค์ ์ฐพ์๊ฐ๋ฉด์ ์์งํด๋ณด๊ธฐ๋ก ํ๋ค.
ํ๋๋ฅผ ์๋๋ผ๋ ์ ๋๋ก ์์์ผ ๋ค์ ๋ด์ฉ์ด ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค.
โ๏ธ๋ณต์ต: Props, ํ๋กญ์ค
- properties(์์ฑ) ์ ์ค์๋ง!
- props๋ ๊ฐ์ฒด → ์ค๊ดํธ ์จ์ฃผ๊ธฐ! { }
- ๋ญ๊ฐ ๋๊ฒจ๋ฐ์ ๋ ์์ ์ปดํฌ๋ํธ์์ {props.์ด๋ฆ} ์ด๋ฐ์์ผ๋ก ์ ๊ทผ. ๊ฐ์ ๋์ถํ ๋ ์ด๋ ๊ฒ ๋ง์ด ์ฐ๋ ๊ฒ ๊ฐ๋ค.
- ๋ฌธ์์ด์ ๋๊ฒจ๋ฐ์ ๋ "" (ํฐ๋ฐ์ดํ)๋ฅผ ์จ์, ๊ทธ ์ธ์ ๊ฐ๋ค์ ์ ๋ฌ๋ฐ์ ๋ {} (์ค๊ดํธ)๋ฅผ ์ฌ์ฉํ๋ค.
๋๊ธธ ๋ 1๊ฐ์ ํ๋กํผํฐ, 2๊ฐ์ ํ๋กํผํฐ, ์ซ์ ํ๋กํผํฐ๋ฅผ ๋๊ธฐ๋ ๋ฐฉ์์ด ์์๋ค.
1๊ฐ ํ๋กํผํฐ
๋จผ์ , ๋ฌธ์์ด ๋๊ฒจ๋ฐ์ ๋ ""
function App() {
return (
<div>
<Header />
<Main name="๊ฐ๋ํฌ"/>
<Footer />
</div>
);
}
์ถ์ฒ: https://goddaehee.tistory.com/300 [๊ฐ๋ํฌ์ ์์๊ณต๊ฐ:ํฐ์คํ ๋ฆฌ]
ํจ์ํ ๋๊ฒจ๋ฐ์ ๋! {}
function Main(props) {
return (
<div>
<main>
<h1>์๋
ํ์ธ์. {props.name} ์
๋๋ค.</h1>
</main>
</div>
);
}
export default Main;
์ถ์ฒ: https://goddaehee.tistory.com/300 [๊ฐ๋ํฌ์ ์์๊ณต๊ฐ:ํฐ์คํ ๋ฆฌ]
2๊ฐ ํ๋กํผํฐ
function App() {
return (
<div>
<Header />
<Main name="๊ฐ๋ํฌ" color="blue"/>
<Footer />
</div>
);
}
export default App;
์ถ์ฒ: https://goddaehee.tistory.com/300 [๊ฐ๋ํฌ์ ์์๊ณต๊ฐ:ํฐ์คํ ๋ฆฌ]
๊ทธ ์์ ํค๊ฐ + ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ =, ๊ทธ๊ฒ ์๋๊ณ ๊ฐ์ฒด์ผ ๊ฒฝ์ฐ .์ด๋ฆ ์ด๋ฐ์์ผ๋ก ๋์ถํ๋ ๊ฒ ๊ฐ๋ค.
์ซ์
function App() {
return (
<div>
<Header />
<Main name={9} color="blue"/>
<Footer />
</div>
);
}
export default App;
์ถ์ฒ: https://goddaehee.tistory.com/300 [๊ฐ๋ํฌ์ ์์๊ณต๊ฐ:ํฐ์คํ ๋ฆฌ]
์ซ์์ผ ๊ฒฝ์ฐ, ์ค๊ดํธ๋ฅผ..์ฌ์ฉํ๋ค. ์~ ใ
์ฐธ๊ณ ์ฌ์ดํธ 1 : [React] Props(ํ๋กญ์ค)๋?
์ฐธ๊ณ ์ฌ์ดํธ2: [React] 4. React ์ปดํฌ๋ํธ(2) - ํ๋กํผํฐ(props)๋?
ํํฐ๋ ๋ต๋ณ
import { useState } from "react";
function Infomation(p) {
return (
<div>
<p>๋ด ์ด๋ฆ์ {p.name}</p>
<p>๋์ด๋ {p.age}</p>
<p>์ ํ๋ฒํธ๋ {p.phone}</p>
</div>
);
}
function App() {
const arr2 = [
{ name: "๊นํ์ผ", age: "21", phone: "010-1234-5678" },
{ name: "์ด์ธ์ผ", age: "26", phone: "010-1234-5678" },
];
const arr = [
{ name: "๋ณด๋ค์ด", age: "3", phone: "์์ผ" },
{ name: "๋ฅ๋น", age: "3", phone: "์์ผ" },
{ name: "๊ตฌ๋ฆ์ด", age: "3", phone: "์์ผ" },
];
return (
<div>
{arr2.map((el) => (
<Infomation name={el.name} age={el.age} phone={el.phone} />
))}
{arr.map((el) => (
<Infomation name={el.name} age={el.age} phone={el.phone} />
))}
</div>
);
}
export default App;
ํํฐ๋ ๋ต๋ณ ์ฝ๋๋ฅผ ๋ณด๊ณ ๋ด๊ฐ ์ด๋ ๋ถ๋ถ์ ์ดํดํ์ง ๋ชปํ๋์ง ์ดํด๋ดค๋ค.
๐ค์ฒซ ๋ฒ์งธ: ์ผ๋จ props๋ฅผ ์ด๋์๋ค๊ฐ ์ค์ผํ๋๊ฑด์ง ๋ชจ๋ฅด๋๊ฑฐ
๐ค๋ ๋ฒ์งธ: p.name์ด๋ผ๋์ง.. ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋ถ๋ชจ or ์์ ์ค ์ด๋์๋ค๊ฐ ๋ฐฐ์นํด์ผํ๋๊ฑด์ง
๐ค์ธ ๋ฒ์งธ: .map() ์ด๋ฐ ์์ฑ์ ์ด๋ ์์ ์ ์ด๋ป๊ฒ ์จ์ผํ๋๊ฑด์ง
๐ค๋ค ๋ฒ์งธ: ํจ์ ํ๊ทธ๋ฅผ ์ด๋ป๊ฒ... ์จ์ผํ๋์ง...
์ด ์ ๋๋ฉด ๊ทธ๋ฅ ๋ชจ๋ฅด๋ ๊ฒ ์๋๊น? ^^
ํํฐ๋๊ป์๋ ์ด๊ฒ ์ค์ํ๊ณ , ์ถํ์ ๋ฆฌ์กํธ๋ก ํ๋ก์ ํธ ๋ง๋ค ๋๋ ์ฃผ๋ก ์ด ๊ธฐ๋ฅ์ ๋ง์ด ์ธ ๊ฒ์ด๋ผ๊ณ ํ์ ์
์ด์ฐจํผ ์ด๊ฑฐ ๋ค์ ๊ฐ์ ๋์ด๊ฐ๋ ์ดํด๋ชปํ ํ ๋๊น!
๋ด๊ฐ ์ดํดํ์ง ๋ชปํ ๋ฌธ์ ๋ค ๋จผ์ , ์ฒซ ๋ฒ์งธ๋ถํฐ ์ฒ์ฒํ ํ์ด๋ณด๊ธฐ๋กํ๋ค.
โ๏ธ1. props๋ ์ด๋์ ์ ๋ฌํด์ผํ ๊น?
์์ ์ปดํฌ๋ํธ์ ์ฃผ๋ ๊ฑด ์๋๋ฐ... '์ด๋ป๊ฒ' '์ด๋๋ก' ์ฃผ์ง?
//๋ค์ ์ฝ๋ ์ํ!!!!
function App() {
return <Sum x={4} y={10} />;
}
function Sum(props) {
return <div>{props.x + props.y}</div>;
}
export default App;
๊ธฐ์ค์ ์ด๊ฑธ ๊ธฐ์ค์ผ๋ก ๊ณต๋ถํด๋ดค๋ค.
์ผ๋จ Sum์ด๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฒ์ฒ์ฒ์ฒ์ฒํํํ ์์ฃผ ์ฒ์ฒํ~ ์ฝ์ผ๋ฉด์
๊ณ์ ์ค์ค๋ก์๊ฒ ์ง๋ฌธํ๋ค.
์ฌ๊ธฐ์ sum์ ์ ๋๋ฌธ์์ด์ง? ๊ทธ ์์ ๋งค๊ฐ๋ณ์๋ฅผ props๋ผ๋ ํค์๋๋ก ์ค ์ด์ ๊ฐ ๋ฌด์์ด์ง? ์ด๋ฐ์์ผ๋ก
์ค์ค๋ก์๊ฒ ๊ณ์ ์ง๋ฌธํ๋ฉฐ ์ด ์ฝ๋๋ฅผ ์์ ํ ์ดํดํ ์ ์๋๋ก 5whys ๋ฐฉ๋ฒ์ ๋์ ๊ณต๋ถ์..๋์ ํด๋ดค๋ค ^-^
๐ก๋ถ๋ชจํ๊ทธ ์ฐพ๋ ๋ฒ
Sum์ด๋ผ๋ ํจ์๋ฅผ App์์ ํธ์ถํ์ผ๋ App์ด ๋ถ๋ชจ, Sum์ด ์์ํจ์๋ค.
๐ค์ด๋ป๊ฒ ๋ถ๋ชจํ๊ทธ, ์์ํ๊ทธ๋ฅผ ์ฐพ๋์ง ์ดํด์๊ฐ์!
์ด ๊ฒฝ์ฐ, ๋ง์ ์์๋ฅผ ๋ณด๋ฉด ์ ์ ๊ฐํผ๋ฅผ ์ก์ ๊ฒ์ด๋ค.
์ด๊ฑด reactํํ์ด์ง์ ๋์์๋ ์์๋ฌธ์ธ๋ฐ ๊ทธ์ ๋ฐ๋ฅธ ์ค๋ช ๊ณผ ํจ๊ป ์ฝ์๋๋ ๋ ์ดํด๊ฐ ์ฝ๊ฒ ๋์๋ค.
๋ฆฌ์กํธ ํํ์ด์ง์ ์ค๋ช ๋ ๋ ์์ธํ๊ฒ ๋์์๋ค.
export default function Profile() {
return (
<Avatar />
);
}
์ ์ฝ๋์์ Profile ์ปดํฌ๋ํธ๋ ์์ ์ปดํฌ๋ํธ์ธ Avatar์ ์ด๋ ํ props๋ ์ ๋ฌํ์ง ์์ต๋๋ค.
โ ์ธ์ฌ์ดํธ1: ๋ณดํต ์ปดํฌ๋ํธ๋ฅผ ์์๋ณด๋ ๋ฐฉ๋ฒ์ ๋๋ฌธ์๋ฅผ ํตํด ์์๋ณผ ์ ์๊ตฌ๋!
โ ์ธ์ฌ์ดํธ2: ์ธ์ฌ์ดํธ1์ ๋ฐํ์ผ๋ก return์ ์ปดํฌ๋ํธ๊ฐ ์๋ค๋ ๊ฑด, ์์์ปดํฌ๋ํธ๊ฐ ๋ค์ด์จ๊ฑฐ๋๊น Avatar์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ Profile์ด๊ตฌ๋!
์ด๋ฐ ์ค๋ช ์ ๋ณด๋ฉด์ ์ ์ถ ๊ฐ๋ฅํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ๋ ์์ธํ ๋ด์ฉ์ ๊ตฌ๊ธ๋ง์ ํด๊ฐ๋ฉฐ ๊ทธ ๋ต์ ์ป์๋ค.
๋ฆฌ์กํธ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ด๋ค. ๋ฐ๋ผ์ ํ๊ทธ๋ ํจ์ํ์ผ๋ก ์.
๊ทธ๋๊น ์ฐ๋ฆฌ๊ฐ html๊ฐ์๋ฐ์ ํ๊ทธ๋ผ๊ณ ํ๋ ๊ฒ๋ค, ์๋ฅผ๋ค์ด div ๋ฑ๊ณผ ๊ฐ์ ํ๊ทธ๋ฅผ ์ฐ๋๋ฐ
์๋ฅผ ๋ค์ด
function Hello() {}
๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์์ ๋ ์ด ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ๊ธฐ ์ํด์๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋๋ค๋ ๊ฒ!
<Hello /> ์ด๋ ๊ฒ!!!
โ ์์ ์ปดํฌ๋ํธ์ props ์ ๋ฌํ๊ธฐ
export default function Profile() {
return (
<Avatar
person={{ name: 'Lin Lanying', imageId: '1bX5QH6' }}
size={100}
/>
);
}
person(๊ฐ์ฒด), size ์ ๋ฌ.
โ ์ธ์ฌ์ดํธ: ๋ถ๋ชจ ์ปดํฌ๋ํธ ๋ด๋ถ์ ์๋ ์์ ์ปดํฌ๋ํธ์ props๋ฅผ ์ฃผ๋๊ฑฐ๊ตฌ๋.
๐ค ์ด์ค๊ดํธ? ๊ฐ์๋ฅผ ๋ดค์ ๋ ์ดํดํ๋๋ฐ ๋ ํท๊ฐ๋ฆฌ๊ฒ ๋๋ ๊ฐ๋ ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก { }์ค๊ดํธ๋ฅผ ์จ์ผํ๋๋ฐ, ์ด๊ฑฐ๋ฅผ jsx์์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ๊ฐ์ธ์ผํ๋ค.
๊ฐ์์์๋ ์ด๋ ๊ฒ ์ค๋ช ํ๋ค. JS๋ฅผ ํธ์ถํ ๋ ํ์ํ๊ณ , ๊ทธ ์์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฅผ ๋ ๋ ํ ๋ฒ ์ด 2๋ฒ์ด ์ฌ์ฉ๋๋ค๊ณ ๋งํ๋ค.
๊ธฐ๋ณธ๊ธฐ๊ฐ ์ค์ํ๋๊น ์ด ๊ฐ๋ ์ ํ์คํ๊ฒ ํ์.
โก ์์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ props์ฝ๊ธฐ
function Avatar({ person, size }) {
// person๊ณผ size๋ ์ด๊ณณ์์ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค.
}
๊ฐ์ฒด๋ฅผ ์ปดํฌ๋ํธ ๋งค๊ฐ๋ณ์์ ๋ฃ์ ๋์๋ ์ค๊ดํธ๊ฐ ์ฐ์ด๋ ๊ฒ์ ์ ์ ์๋ค.
๋ด๊ฐ ๋ฐฐ์ ๋๊ฑด function Avatar(props) ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ๊ธด ํ๋๋ฐ ์ด๋ ๊ฒ๋ ๋ฃ์ ์ ์๋ค๋ ๊ฒ ์ฐธ๊ณ !
import { getImageUrl } from './utils.js';
function Avatar({ person, size }) {
return (
<img
className="avatar"
src={getImageUrl(person)}
alt={person.name}
width={size}
height={size}
/>
);
}
export default function Profile() {
return (
<div>
<Avatar
size={100}
person={{
name: 'Katsuko Saruhashi',
imageId: 'YfeOqp2'
}}
/>
<Avatar
size={80}
person={{
name: 'Aklilu Lemma',
imageId: 'OKS67lh'
}}
/>
<Avatar
size={50}
person={{
name: 'Lin Lanying',
imageId: '1bX5QH6'
}}
/>
</div>
);
}
์ด๊ฑด ๋ฆฌ์กํธ ํ์ ์๋ ์์์ธ๋ฐ ์ถ๋ ฅ์ ์ด๋ฐ์์ผ๋ก ๋๋ ๊ฒ ๊ฐ๋ค.
2๋ฒ์งธ- 4๋ฒ์งธ ๋ชจ๋ฅด๋ ์ ์ ๋ํด์๋ ๋ด์ผ ์ด์ด์ ํด์ผ๊ฒ ๋ค.
๋ค์ ์ฒ์๋ถํฐ ๊ณต๋ถํ๋ค๋ณด๋ ์๊ฒ๋ ์ .
๋ฆฌ์กํธ์ ๊ธฐ๋ณธ๊ธฐ, ๊ธฐ์ด๊ฐ ๋ง์ด ๋ถ์กฑํ ๊ฒ์ ์๊ฒ๋์๋ค.
์ฒ์์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ๋ค์ด ๋ฌธ์ ๋ฅผ ํ ๋ ์ดํด๋ฅผ ๋ชปํ๊ฒ๋๋ ์์ธ์ผ๋ก ํ์ ๋๋ค.
๋ค์ ๋ณด๋๊น ์ด๊ฒ ๊ทธ ๋ป์ด๊ตฌ๋ ์ดํดํ ์ ์์๋ค.
02 UX์ง์ค๋ฐ: ์์นด ๋ฌธ์ ํด๊ฒฐ
โ๏ธ๋ฌธ์ ํด๊ฒฐ
๋ฌธ์ ์ ์๋ฅผ ์ง๋ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ๋ก~!
๋ค์ํ ๋ฐฉ๋ฒ๋ก ๋ค์ด ์๋ค.
โ HMW(How Might We?)
โก SCAMPER
โข ๋ธ๋ ์ธ์คํ ๋ฐ
โฃ Yes and
โค ๋ฆฌ์์น: ์ ์ฌ ์๋น์ค, ๊ฒฝ์์ฌ ํน์ ๊ธฐ๋ฅ ๋ฑ
์ฐพ์๋ณด๋ ์ด๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฐฉ๋ฒ๋ก ๋ค์ด ์กด์ฌํ์ง๋ง
์ผ๋จ ๋ฐ์ ๋ ์๊ฐํด์ฃผ์ จ๋ ๋ฐฉ๋ฒ๋ก ์ ์์ฃผ๋ก ์์ด๋์ด๋ฅผ ๋ฐ์ฐํด๋ณด๊ธฐ๋ก ํ๋ค!
์ฐ๋ฆฌ ํ์ ๋ฐฉํฅ์ฑ์
๋จผ์ ์์นด์ ๊ธฐ๋ฅ์ ๋ํ ์ ์ฒด ํ์์ ์ดํด๋ ฅ ํฅ์ + ์์ด๋์ด ๋์ถ์ ์ํด
์์นด ์์ฝ, ๋ฐ๋ฉ ์ UIํ๋ฉด์ ๋จผ์ ์กฐ์ฌํ๊ณ
๊ฒฝ์์ฌ ๊ธฐ๋ฅ๊ณผ ์๋น์ค ๋ฆฌ์์น๋ฅผ ํด์ ์ด๋ค ์์ด๋์ด๋ฅผ ๋ด๋ ๊ฒ ์ข์์ง
๋จผ์ ํ์ ํด๋ณด๊ธฐ๋กํ๋ค.
ํ์ ํ๋ ์ค์ ์๊ฐ๋ณด๋ค ์์ด๋์ด๋ฅผ ๋์ถํ๋ ๋ฐฉ๋ฒ์ด ์ด๋ ค์ ๋ค.
ํ์์๋ณด๋ค ๋ ๋ง์ ๊ธฐ๊ฐ๋์ ์งํํ๋ ๊ฒ์์๋
์๊ฐ๋ณด๋ค ๋ค์ํ๊ณ ๋ง์ ์์ด๋์ด๋ฅผ ๋์ถํ ์ ์์๋ค.
์.. ์๋ฌด๋๋ ๋ค๋ค ์์น๋ฅผ ํ๋๋ผ ๋ค๊ฐ์ด ๋ํ๋ฅผ ํ๋ ์๊ฐ์ด ์์ด์ ๊ทธ๋ฐ๊ฒ์ ์๋๊น? ์๊ฐํด๋ณด์๋ค.
ํ์๋ค๊ณผ ๋ค๊ฐ์ด ์๊ธฐ๋ฅผ ๋๋ ๋ณธ ๊ฒฐ๊ณผ,
๋ชจ๋๊ฐ ํ๋๊ฐ์ด ์ ์ ๋ชจ์ ํ๋ ์๋ฆฌ๋
๋ฌธ์ ์ ์๋ณด๋ค ๋ฌธ์ ํด๊ฒฐ์ด ๋ ์ด๋ ต๊ณ ๋งํ๋๋์ด๋ผ๋ ํ..
๋๋ ๋ฑ ๊ทธ๋ ๊ฒ ๋๊ผ๋ค.
๋ค์ ํ๋ก์ ํธ์์ ๋ฌธ์ ํด๊ฒฐ ๋จ๊ณ๊ฐ ์ค์ํ ๊ฒ์ผ๋ก ๋ณด์ด๋๋ฐ
์ฌ๊ธฐ์ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ ์ ๋๋ก ๋ชป๋ฐ๋๋ค๋ฉด
๋ค์ ํ๋ก์ ํธ์์๋ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ธ ์๋ ์์ ๊ฒ์ด๋ผ๊ณ ํ๋จ๋๋ค.
๋ด์ผ ํ ์ผ:
1. ๋ค๋ฅธ ์กฐ์์ ์ด๋ป๊ฒ ๋ฌธ์ ํด๊ฒฐ๊ณผ์ ์ ๋ฐ๊ณ ์๋์ง ์กฐ์ฌํด๋ณด๊ธฐ
2. ํํฐ๋๊ป ์ง๋ฌธํ๊ธฐ.
3. ์๋น์ค๋ณ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ์ ๋ฆฌ์์นํด๋ณด๊ธฐ (+๊ณผ์ , ์ด๋ป๊ฒ ์ ๋ฆฌํ๋์ง)
๋ง๋ฌด๋ฆฌํ๋ฉฐ...
์๋ฌด๋๋ ๋ง์ง๋ง ํ๋ก์ ํธ์ ์์ ๊ฑฑ์ ๊ฑฐ๋ฆฌ๊ฐ ์ข ๋์ด๋ ๊ฒ ๊ฐ๋ค.
๋ด๊ฐ ์ ๋๋ก ํ์ง ๋ชปํ๋ฉด ์ ๋๋ก ์ด๋์ง ๋ชปํ ๊ฒ์ด๋ผ๋ ๊ฐ๋ฐ์ด ์๊ธด ๊ฒ ๊ฐ๋ค.
๋ ํผ์ ์๊ฐํ๊ธฐ๋ณด๋จ ๋ค๋ฅธ ์กฐ์์, ๋ค๋ฅธ ์ฌ๋์ ์ด๋ป๊ฒ ์งํํ๋์ง ์๊ฐ์ ํ๋ฆ์ ๋ณผ ํ์๊ฐ ์์ ๊ฒ ๊ฐ๋ค.
๊ณ ์ํ ๋์๊ฒ
์ค๋๋ ์๊ณ ํ๋ค :D