Unit3 ํšŒ๊ณ 

YEN Jยท2022๋…„ 10์›” 31์ผ
0

code states

๋ชฉ๋ก ๋ณด๊ธฐ
29/43

[React]Custom Component

๐Ÿ”† Component Driven Development

CDD๐Ÿง

CDD๋ž€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ์ •ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด๊ฒŒ ๋ฌด์Šจ ๋œป์ผ๊นŒ? ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„์—์„œ ์‹œ์ž‘ํ•ด ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํŽ˜์ด์ง€๋กœ ์กฐ๋ฆฝํ•˜๋Š” bottom-up ๋ฐฉ์‹์œผ๋กœ UI๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์ ์ด ์žˆ๋‹ค.
CDD

CSS-in-JS๐Ÿ–‡

1. ๊ตฌ์กฐํ™”๋œ CSS์˜ ํ•„์š”์„ฑ์ด ๋Œ€๋‘๋œ ๋ฐฐ๊ฒฝ

  • ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ, ํŒ€์› ์ˆ˜, ๋ณต์žก๋„ ์ฆ๊ฐ€
  • ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์˜ ๋“ฑ์žฅ

2. CSS ๊ตฌ์กฐํ™”๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์‹œ๋„

  • CSS ์ „์ฒ˜๋ฆฌ๊ธฐ ๋“ฑ์žฅ
    • CSS ์ „์ฒ˜๋ฆฌ๊ธฐ: CSS๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€์„ ์ฃผ๋Š” ๋„๊ตฌ๋กœ ๊ธฐ์กด CSS ๋ฌธ์ œ์ ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…(๋ณ€์ˆ˜, ํ•จ์ˆ˜, ์ƒ์† ๋“ฑ)์„ ํ™œ์šฉํ•ด ํ•ด๊ฒฐ
    • ๋ฌธ์ œ์ 
      • ์ „์ฒ˜๋ฆฌ๊ธฐ ์ž์ฒด๋งŒ์œผ๋กœ๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— CSS ์ „์ฒ˜๋ฆฌ๊ธฐ์— ๋งž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
    • SASS: SCSS ์ฝ”๋“œ๋ฅผ ์ฝ์–ด ์ „์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ์ „์—ญ CSS ๋ฒˆ๋“ค ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ ์—ญํ•  ์ˆ˜ํ–‰
  • CSS ๋ฐฉ๋ฒ•๋ก 
    • CSS ์ „์ฒ˜๋ฆฌ๊ธฐ์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๋‘๋œ ๋ฐฉ๋ฒ•๋ก 
    • ์ง€ํ–ฅ์ 
      • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ
      • ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐํ™”(์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด)
      • ์ฝ”๋“œ์˜ ํ™•์žฅ์„ฑ
      • ์ฝ”๋“œ์˜ ์˜ˆ์ธก์„ฑ(ํด๋ž˜์Šค ๋ช…์œผ๋กœ ์˜๋ฏธ ์˜ˆ์ธก ๊ฐ€๋Šฅ)
    • BEM
      • Block, Element, Modifier๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํด๋ž˜์Šค๋ช…์„ ์ž‘์„ฑํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ CSS ๋ฐฉ๋ฒ•๋ก 
      • Block: ์ „์ฒด ๋ธ”๋Ÿญ ์š”์†Œ
      • Element: ๋ธ”๋Ÿญ ๋‚ด ํ•œ ์กฐ๊ฐ
      • Modifier: ๋ธ”๋Ÿญ ์š”์†Œ์˜ ์†์„ฑ
    • ๋ฌธ์ œ์ 
      • ์žฅํ™ฉํ•ด์ง„ ํด๋ž˜์Šค๋ช… ์„ ํƒ์ž
      • ์ง„์ •ํ•œ ์บก์Šํ™” ๊ฐœ๋… ๊ตฌํ˜„ ๋ถˆ๊ฐ€
  • CSS-in-JS ๋“ฑ์žฅ
    • CSS๋„ JS ํŒŒ์ผ ์•ˆ์—์„œ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฐœ๋…
    • Style-Component: ๋Œ€ํ‘œ์ ์ธ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
      • ๊ธฐ๋Šฅ์  ํ˜น์€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ๋ถ€ํ„ฐ UI๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ๋‹จ์ˆœํ•œ ํŒจํ„ด ์ œ๊ณต

3. CSS ๋ฐฉ๋ฒ•๋ก ๋“ค์˜ ํŠน์ง•, ์žฅ๋‹จ์ 

ํŠน์ง•์žฅ์ ๋‹จ์ 
CSS๊ธฐ๋ณธ์ ์ธ ์Šคํƒ€์ผ๋ง ๋ฐฉ๋ฒ•-์ผ๊ด€๋œ ํŒจํ„ด ๊ฐ–๊ธฐ ์–ด๋ ค์›€
!important์˜ ๋‚จ์šฉ
SASS
(preprocessor)
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก ์„ ๋„์ž…ํ•˜์—ฌ,
์ปดํŒŒ์ผ๋œ CSS๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ
๋ณ€์ˆ˜/ํ•จ์ˆ˜/์ƒ์† ๊ฐœ๋…์„
ํ™œ์šฉํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
CSS์˜ ๊ตฌ์กฐํ™”
์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด ํ•„์š”,
๋””๋ฒ„๊น… ์‹œ ์–ด๋ ค์›€
๊ฑฐ๋Œ€ํ•ด์ง€๋Š” ์ปดํŒŒ์ผํ•œ CSS ํŒŒ์ผ
BEMCSS ํด๋ž˜์Šค๋ช… ์ž‘์„ฑ์—
์ผ๊ด€๋œ ํŒจํ„ด์„ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก 
๋„ค์ด๋ฐ์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ,
์ „์ฒ˜๋ฆฌ ๊ณผ์ • ๋ถˆํ•„์š”
์„ ํƒ์ž์˜ ์ด๋ฆ„์ด ์žฅํ™ฉํ•˜๊ณ ,
ํด๋ž˜์Šค ๋ชฉ๋ก์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง
Styled-Component
(CSS-in-JS)
์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ
CSS๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ
๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
CSS๋ฅผ ์ปดํฌ๋„ŒํŠธ ์•ˆ์œผ๋กœ ์บก์Šํ™”,
๋„ค์ด๋ฐ์ด๋‚˜ ์ตœ์ ํ™”๋ฅผ ์‹ ๊ฒฝ ์“ธ
ํ•„์š”๊ฐ€ ์—†์Œ
๋น ๋ฅธ ํŽ˜์ด์ง€ ๋กœ๋“œ์— ๋ถˆ๋ฆฌํ•จ

๐Ÿ”† CDD ๊ฐœ๋ฐœ ๋„๊ตฌ

Styled Components๐Ÿ“Œ

Styled components๋ž€ CDD๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ CSS๋ฅผ ์ปดํฌ๋„ŒํŠธํ™” ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ React ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

    # with npm
    $ npm install --save styled-components
    
    # with yarn
    $ yarn add styled-components
  • package.json์— ์ถ”๊ฐ€(์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜์–ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์—ฌ์คŒ)

    {
      "resolutions": {
        "styled-components": "^5"
      }
    }
  • Styled Components๋ฅผ ์‚ฌ์šฉํ•  ํŒŒ์ผ๋กœ ๋ถˆ๋Ÿฌ์˜ด
    import styled from "styled-components"

Styled Components ๋ฌธ๋ฒ•
Templete Literals ๋ฌธ๋ฒ• ์‚ฌ์šฉ

  • ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ

    const ์ปดํฌ๋„ŒํŠธ์ด๋ฆ„ = styled.ํƒœ๊ทธ์ข…๋ฅ˜`
        CSS์†์„ฑ: ์†์„ฑ๊ฐ’;
    `
  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ

    const ์ปดํฌ๋„ŒํŠธ์ด๋ฆ„ = styled(์žฌํ™œ์šฉํ•  ์ปดํฌ๋„ŒํŠธ)`
        ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  CSS์†์„ฑ: ์†์„ฑ๊ฐ’
    `
  • Props ํ™œ์šฉํ•˜๊ธฐ

    const ์ปดํฌ๋„ŒํŠธ์ด๋ฆ„ = styled.ํƒœ๊ทธ์ข…๋ฅ˜`
        CSS์†์„ฑ: ${ (props) => ํ•จ์ˆ˜ ์ฝ”๋“œ }
    `
    • ํ™œ์šฉ ์ƒํ™ฉ
      • props๋กœ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒฝ์šฐ
      • props ๊ฐ’์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒฝ์šฐ
  • ์ „์—ญ ์Šคํƒ€์ผ ์„ค์ •ํ•˜๊ธฐ

    • createGlobalStyle ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ด
      import { createGlobalStyle } from "styled-components";
    • createGlobalStyle ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์„ค์ •ํ•ด์ฃผ๊ณ  ์‹ถ์€ ์Šคํƒ€์ผ ์ž‘์„ฑ
      ์˜ˆ์‹œ
      const GlobalStyle = createGlobalStyle`
        button {
            padding : 5px;
                margin : 2px;
                border-radius : 5px;
        }
      `
      • ๋งŒ๋“ค์–ด์ง„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ

Storybook๐Ÿ“–

Storybook์ด๋ž€ CDD๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ UI ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฌธ์„œํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋”ฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์„ฑํ•ด์ฃผ์–ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ™•๋Œ€ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๊ณ  ์ž๋™์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Storybook์ด ์ง€์›ํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ
    • UI ์ปดํฌ๋„ŒํŠธ ์นดํƒˆ๋กœ๊ทธํ™”
    • ์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”๋ฅผ Stories๋กœ ์ €์žฅ
    • ํ•ซ ๋ชจ๋“ˆ ์žฌ ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ๊ฐœ๋ฐœ ํˆด ๊ฒฝํ—˜ ์ œ๊ณต
    • React๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๋ทฐ ๋ ˆ์ด์–ด ์ง€์›

๐Ÿ”† UseRef

useRef๐Ÿค“

useRef๋ž€ React๋กœ ์•ฑ ๊ฐœ๋ฐœ ์‹œ DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” hook ํ•จ์ˆ˜๋กœ DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•ด์•ผํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ƒํ™ฉ์œผ๋กœ DOM ์•จ๋ฆฌ๋จผํŠธ์˜ ์ฃผ์†Œ๊ฐ’์„ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ

  • ์‚ฌ์šฉ ์ƒํ™ฉ ์˜ˆ์‹œ
    • focus
    • text selection
    • media playback
    • ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ
    • d3.js, greensock ๋“ฑ DOM ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ

์‚ฌ์šฉ ํ˜•์‹

const ์ฃผ์†Œ๊ฐ’์„_๋‹ด๋Š”_๊ทธ๋ฆ‡ = useRef(์ฐธ์กฐ์ž๋ฃŒํ˜•)
// ์ฃผ์†Œ๊ฐ’์„_๋‹ด๋Š”_๊ทธ๋ฆ‡ ๋ณ€์ˆ˜์—๋Š” {current: ์ฐธ์กฐ์ž๋ฃŒํ˜•}์˜ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ
return (
    <div>
      <input ref={์ฃผ์†Œ๊ฐ’์„_๋‹ด๋Š”_๊ทธ๋ฆ‡} type="text" />
        {/* React์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ref๋ผ๋Š” ์†์„ฑ์— ์ฃผ์†Œ๊ฐ’์„_๋‹ด๋Š”_๊ทธ๋ฆ‡์„ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•˜๋ฉด*/}
        {/* ์ฃผ์†Œ๊ฐ’์„_๋‹ด๋Š”_๊ทธ๋ฆ‡ ๋ณ€์ˆ˜์—๋Š” input DOM ์—˜๋ฆฌ๋จผํŠธ์˜ ์ฃผ์†Œ๊ฐ€ ๋‹ด๊น๋‹ˆ๋‹ค. */}
        {/* ํ–ฅํ›„ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—์„œ input DOM ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. */}
    </div>);
  • ์ฃผ์†Œ๊ฐ’์€ ์ปดํฌ๋„ŒํŠธ์˜ ์ „ ์ƒ์• ์ฃผ๊ธฐ๋ฅผ ํ†ตํ•ด ๊ณ„์† ์œ ์ง€๋จ
    • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ ๋˜๊ธฐ ์ „์—๋Š” ๊ฐ’์„ ๊ณ„์† ์œ ์ง€
    • useRef๋ฅผ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜์— ๋‹ด๊ฒจ์ง„ ์ฃผ์†Œ๊ฐ’์€ re-render ๋˜๋”๋ผ๋„ ๋ฐ”๋€Œ์ง€ ์•Š์Œ
  • ๋ณ€๊ฒฝ ์‹œ ๋ Œ๋”๋ง ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฐ’์„ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉ

์ฃผ์˜์ 

  • ์ œ์‹œ๋œ ์ƒํ™ฉ์„ ์ œ์™ธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ React์˜ ๋ฌธ๋ฒ•์„ ๋ฒ—์–ด๋‚˜ useRef๋ฅผ ๋‚จ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ถ€์ ์ ˆํ•จ
  • ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์›์น™๊ณผ ๋ฐฐ์น˜๋˜๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๊ฒƒ

์ถœ์ฒ˜: code states
์ฐธ์กฐ: ๋ณ„์ฝ”๋”ฉ-useRef

<์˜ค๋Š˜์˜ ์ผ๊ธฐ>
์ด๋ฒˆ ์œ ๋‹›์€ html,js ํŒŒ์ผ์€ react๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ทธ๋ ‡๋‹ค๋ฉด css ํŒŒ์ผ๊นŒ์ง€ ํ•˜๋‚˜์˜ ํŒŒ์ผ ์•ˆ์— ๋‹ค ๊ฐ™์ด ๋„ฃ์–ด์ค„ ์ˆ˜ ์—†๋Š”๊ฑธ๊นŒ๋ผ๋Š” ๋‚˜์˜ ๋ฌผ์Œํ‘œ์— ๋Š๋‚Œํ‘œ๋ฅผ ์ฐ์–ด์ฃผ๋Š” ์œ ๋‹›์ด์—ˆ๋‹ค. styled-components๋ฅผ ํ†ตํ•ด js ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ css๋ฅผ ๋งŒ์ ธ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋„ˆ๋ฌด ์‹ ๊ธฐํ–ˆ๊ณ  ์–ด๋ ค์› ์ง€๋งŒ ๊ทธ๋งŒํผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋„ ๋งŽ์•˜๋‹ค.
์ด๋ฒˆ์—๋Š” ๊ณผ์ œ ์—ญ์‹œ ๋งŒ๋งŒ์น˜ ์•Š์•˜๋Š”๋ฐ ํŽ˜์–ด ํ™œ๋™์„ ๊ฐ™์ด ์ง„ํ–‰ํ•œ ํŽ˜์–ด๋ถ„์—๊ฒŒ๋Š” ๋ˆ๊ธฐ ์žˆ๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ์ž์„ธ๋ฅผ ๋งŽ์ด ๋ฐฐ์› ๋‹ค. ๋ฌธ์ œ์˜ ์›์ธ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„๋ณด๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์‹œ๋„ํ•ด๋ณด๋ ค๋Š” ๋ชจ์Šต์„ ๋ณด๋ฉฐ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋”๋ผ๋„ ์–ด๋– ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ˆ๊ธฐ ์žˆ๊ฒŒ ์‹œ๋„ํ•ด๋ณด๋Š” ์ž์„ธ๋ฅผ ์ง€๋‹ˆ๋ฉด ๋‚˜์ค‘์— ํฐ ๋ฌธ์ œ๋ฅผ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ์œ ๋‹›์ด์—ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€