๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒผ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_ํ”„๋กœ๋•ํŠธ ๋””์ž์ด๋„ˆ

[01/06 ๋ถ€ํŠธ์บ ํ”„] ๊ฐ•์˜: ๋ฆฌ์•กํŠธ ์ž…๋ฌธ 2์ฃผ์ฐจ, โ‘ UX์ง‘์ค‘๋ฐ˜: ์˜์นด ๋ฌธ์ œํ•ด๊ฒฐ ๊ณผ์ œ

by geumsong 2025. 1. 6.
728x90

 

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 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

728x90

์ตœ๊ทผ๋Œ“๊ธ€

์ตœ๊ทผ๊ธ€

skin by ยฉ 2024 ttutta