λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
[개발] Practice/React

[React] import/export μ‚¬μš©ν•΄λ³΄κΈ°

by Connecting-the-dots 2022. 3. 23.
728x90
λ°˜μ‘ν˜•

πŸ’‘ μ‹€μŠ΅ 포인트!

  • μ‡Όν•‘λͺ° λ ˆμ΄μ•„μ›ƒ λ””μžμΈν•˜κΈ° ν¬μŠ€νŒ…μ—μ„œλŠ” ν•˜λ“œμ½”λ”©μ„ ν–ˆμ—ˆλŠ”λ°, μ΄λ²ˆμ—λŠ” 데이터바인딩을 ν•΄μ£Όμ—ˆλ‹€.
  • λΈŒλΌμš°μ €μ— λ Œλ”λ§λ˜μ–΄ λ³΄μ—¬μ§€λŠ” 화면은 λ™μΌν•˜λ‹€.

πŸ’œ μƒν’ˆ 데이터 미리보기

[
    {
      id : 0,
      title : "White and Black",
      content : "Born in France",
      price : 120000
    },
  
    {
      id : 1,
      title : "Red Knit",
      content : "Born in Seoul",
      price : 110000
    },
  
    {
      id : 2,
      title : "Grey Yordan",
      content : "Born in the States",
      price : 130000
    }
  ];
  • 데이터 바인딩을 ν•˜κΈ° μœ„ν•΄ μƒ˜ν”Œ μƒν’ˆ 데이터λ₯Ό μ€€λΉ„ν–ˆλ‹€.
  • 각 μƒν’ˆ 정보λ₯Ό object μžλ£Œν˜•μ— λ‹΄μ•„ array 에 λ„£μ–΄μ£Όμ—ˆλ‹€.

🀍 import / export λ¬Έλ²•μ˜ ν•„μš”μ„± μ•Œμ•„λ³΄κΈ°

  • μ΄μ „μ—λŠ” useState() λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ array ν˜•νƒœμ˜ 자료λ₯Ό λ‹΄μ•˜μ§€λ§Œ, λ°μ΄ν„°μ˜ 양이 λ§Žμ•„μ§ˆμˆ˜λ‘ μ½”λ“œμ˜ 가독성이 λ–¨μ–΄μ§€λ―€λ‘œ λ”°λ‘œ νŒŒμΌμ„ λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•  ν•„μš”κ°€ μžˆλ‹€.
  • 그리고 νŒŒμΌμ„ λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ import / export 문법을 μ•Œμ•„μ•Όν–ˆλ‹€.

🀍 μƒν’ˆ 데이터 전솑방법 고민해보기

  • μƒν’ˆ 데이터λ₯Ό 담은 νŒŒμΌμ„ data.js 라고 ν–ˆμ„ λ•Œ, 이 파일의 데이터λ₯Ό App.js 둜 μ „μ†‘ν•˜λ €λ©΄
  • λ¨Όμ €, data.js μ—μ„œ μ›ν•˜λŠ” 데이터λ₯Ό export ν•˜κ³ 
  • App.js μ—μ„œ data.js μ—μ„œ export ν•œ 데이터λ₯Ό import ν•΄μ£Όλ©΄ λœλ‹€.

πŸ’œ export μ΄ν•΄ν•˜κΈ°

🀍 export default 문법 μ•Œμ•„λ³΄κΈ°

  • src 폴더에 App.js 와 λ‚˜λž€νžˆ μƒν’ˆ 데이터λ₯Ό 담은 data.js νŒŒμΌμ„ 생성해쀀닀.
  • 이 νŒŒμΌμ—μ„œ λ³€μˆ˜λ₯Ό export ν•˜κ³  싢을 λ•Œμ—λŠ” export default λΌλŠ” 문법을 μ‚¬μš©ν•˜λŠ”λ° μ‚¬μš©λ°©λ²•μ€ λ‹€μŒκ³Ό κ°™λ‹€.
// export default μ‚¬μš©λ°©λ²•1

let name = 'Seoyun';
export default name;
  

// export default μ‚¬μš©λ°©λ²•2
export default 'Seoyun';
  • λ³€μˆ˜λͺ…, ν•¨μˆ˜λͺ…, μžλ£Œν˜• μ „λΆ€ export κ°€ κ°€λŠ₯ν•˜λ‹€.
  • νŒŒμΌλ§ˆλ‹€ export default λΌλŠ” ν‚€μ›Œλ“œλŠ” ν•˜λ‚˜λ§Œ μ‚¬μš©κ°€λŠ₯ν•˜λ©°, μ—¬λŸ¬ 개의 λ³€μˆ˜λ‚˜ ν•¨μˆ˜λ₯Ό export ν•΄μ•Ό ν•œλ‹€λ©΄ μ€‘κ΄„ν˜Έ μ•ˆμ— export ν•  λ³€μˆ˜λ‚˜ ν•¨μˆ˜λ₯Ό λ„£μ–΄μ£Όλ©΄ λœλ‹€.

🀍 export { } 문법 μ•Œμ•„λ³΄κΈ°

  • μ—¬λŸ¬ 개의 λ³€μˆ˜λ‚˜ ν•¨μˆ˜ 등을 export ν•΄μ£Όκ³  싢을 λ•ŒλŠ” export { } 문법을 μ‚¬μš©ν•˜λ©΄ λœλ‹€.
let name1 = 'Seoyun';
let name2 = 'Jihyeon';

export { name1, name2 };
  • export default λ¬Έλ²•μ˜ 경우 λ³€μˆ˜λͺ…을 μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„ μ‚¬μš©μ΄ κ°€λŠ₯ν–ˆμ§€λ§Œ, export { } 문법은 κΌ­ λ³€μˆ˜λͺ…μ΄λ‚˜ ν•¨μˆ˜λͺ…이 μžˆμ–΄μ•Ό μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

πŸ’œ import μ΄ν•΄ν•˜κΈ°

🀍 import 문법 μ•Œμ•„λ³΄κΈ°

// export default 문법 μ‚¬μš©λ°©λ²•1 μ‚¬μš©ν•œ 경우 import 방법
import name from './data.js';

// export default 문법 μ‚¬μš©λ°©λ²•2 μ‚¬μš©ν•œ 경우 import 방법
import Name from './data.js';
  • App.js μ—μ„œ data.js μ—μ„œ export ν•œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ import λ³€μˆ˜λͺ… from '경둜' 의 ν˜•νƒœλ‘œ App.js 상단에 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ£Όλ©΄ λœλ‹€.
  • data.js μ—μ„œ export ν•  λ•Œ λ³€μˆ˜λͺ…을 μž‘μ„±ν–ˆλ‹€λ©΄ ν•΄λ‹Ή λ³€μˆ˜λͺ…을, λ³€μˆ˜λͺ… 없이 export ν–ˆλ‹€λ©΄ App.js μ—μ„œ import ν•  λ•Œ μ μ ˆν•œ λ³€μˆ˜λͺ…을 지어주면 λœλ‹€.
  • 경둜 μž‘μ„±ν•  λ•Œ ./ 은 ν˜„μž¬μ˜ 경둜λ₯Ό μ˜λ―Έν•œλ‹€.

🀍 import { } 문법 μ•Œμ•„λ³΄κΈ°

  • export { } λ¬Έλ²•μœΌλ‘œ 내보낸 λ³€μˆ˜λ“€μ„ κ°€μ Έλ‹€ μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ import { } 문법을 μ‚¬μš©ν•˜λ©΄ λœλ‹€.
import { name1, name2 } from './data.js';
  • μœ„μ™€ 같이 export ν–ˆλ˜ λ³€μˆ˜λ“€ 쀑 μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” λ³€μˆ˜λ“€λ§Œ κ³¨λΌμ„œ μ€‘κ΄„ν˜Έ μ•ˆμ— λ³€μˆ˜λͺ…을 적어주면 λœλ‹€.
  • 이 κ²½μš°λŠ” export ν–ˆλ˜ λ³€μˆ˜λͺ…을 κ·ΈλŒ€λ‘œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. 

πŸ’œ μƒν’ˆ 데이터 파일둜 λ°μ΄ν„°λ°”μΈλ”©ν•˜κΈ°

🀍 data.js 파일 μƒμ„±ν•˜κΈ°

// export default 문법 μ‚¬μš©λ°©λ²•2 μ‚¬μš©

export default [
    {
      id : 0,
      title : "White and Black",
      content : "Born in France",
      price : 120000
    },
  
    {
      id : 1,
      title : "Red Knit",
      content : "Born in Seoul",
      price : 110000
    },
  
    {
      id : 2,
      title : "Grey Yordan",
      content : "Born in the States",
      price : 130000
    }
  ];

🀍 App.js  νŒŒμΌμ— μƒν’ˆ 데이터 import ν•˜κΈ°

import Data from './data.js';
  • data.js μ—μ„œ export ν•  λ•Œ λ³€μˆ˜λͺ…을 μž‘μ„±ν•˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ App.js 둜 import ν•΄μ˜¬ λ•Œ Data 라고 λ³€μˆ˜λͺ…을 λΆ™μ—¬μ£Όμ—ˆλ‹€. 

🀍 μƒν’ˆ 데이터λ₯Ό html 에 λ°μ΄ν„°λ°”μΈλ”©ν•˜κΈ°

// 전체 μ½”λ“œ 미리보기
// μ½”λ“œκ°€ λ„ˆλ¬΄ κΈΈμ–΄μ„œ λΆˆν•„μš”ν•œ μ½”λ“œλŠ” μ œμ™Έν–ˆλ‹€.

import Data from './data.js'; 

function App() {

  let [shoes, setShoes] = useState(Data);
  
  return (
    <div className="App">

        <div className="container">
            <div className="row">
                <div className="col-md-4 grid">
                    <img src="https://codingapple1.github.io/shop/shoes1.jpg" />
                    <h5>{shoes[0].title}</h5>
                    <p>{shoes[0].price}</p>
                </div>
                <div className="col-md-4 grid">
                    <img src="https://codingapple1.github.io/shop/shoes2.jpg" />
                    <h5>{shoes[1].title}</h5>
                    <p>{shoes[1].price}</p>
                </div>
                <div className="col-md-4 grid">
                    <img src="https://codingapple1.github.io/shop/shoes3.jpg" />
                    <h5>{shoes[2].title}</h5>
                    <p>{shoes[2].price}</p>
                </div>
            </div>
        </div>
    </div>
    );
}

export default App;
  • data.js μ—μ„œ import ν•΄μ˜¨ Data λŠ” shoes λΌλŠ” state 의 κ°’μœΌλ‘œ λ„£μ–΄μ£Όμ—ˆλ‹€.
  • shoes 에 μ €μž₯된 값은 array νƒ€μž…μ΄λ―€λ‘œ shoes[0], shoes[1], shoes[2] 와 같은 ν˜•νƒœλ‘œ 각 μƒν’ˆμ˜ 정보λ₯Ό κΊΌλ‚Ό μˆ˜κ°€ μžˆλ‹€.
  • 그리고 각 μƒν’ˆμ˜ μƒμ„Έμ •λ³΄λŠ” object νƒ€μž…μ΄λ―€λ‘œ shoes[0].title, shoes[0].price 와 같은 ν˜•νƒœλ‘œ μƒν’ˆμ˜ 상세 정보λ₯Ό κΊΌλ‚Ό 수 μžˆλ‹€.

 

728x90
λ°˜μ‘ν˜•