🎯 React의 props κ°œλ…μ— λŒ€ν•΄ 배우고, Modals μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.


πŸ“— Today I Learned

props

propsλŠ” "properties"의 μ€„μž„λ§λ‘œ λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ™ΈλΆ€μ—μ„œ 값을 전달할 수 있게 ν•΄μ£ΌλŠ” κ°μ²΄μž…λ‹ˆλ‹€.

  • μ»΄ν¬λ„ŒνŠΈλŠ” ν•¨μˆ˜λΌμ„œ propsλŠ” ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ²˜λŸΌ μ „λ‹¬λ©λ‹ˆλ‹€.

  • μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œλŠ” props.μ΄λ¦„μœΌλ‘œ μ ‘κ·Όν•˜κ±°λ‚˜, ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή{ 이름 }으둜 κΊΌλ‚΄ μ‚¬μš©ν•©λ‹ˆλ‹€.


μ˜ˆμ‹œ μ½”λ“œ

MyWeather.tsx

import React from 'react';

interface MyProps {
  weather: string;
  children: React.ReactNode;
}

const MyWeather: React.FC<MyProps> = ({ weather, children }) => {
  return (
    <div>
      <p>{children}</p>
      였늘의 λ‚ μ”¨λŠ” {weather}μž…λ‹ˆλ‹€.
    </div>
  );
};

export default MyWeather;

app.tsx

import MyWeather from './MyWeather';

function App() {
  return (
    <div className='container'>
      <MyWeather weather='λ§‘μŒ'>일기 예보</MyWeather>
    </div>
  );
}

export default App;
  • propsλŠ” <Component something="κ°’" /> β†’ Component({ something: "κ°’" }) 의 ν˜•νƒœλ‘œ μ „ν•΄μ§‘λ‹ˆλ‹€.

  • children 은 <Component> μ»΄ν¬λ„ŒνŠΈ νƒœκ·Έ 사이에 μž‘μ„±λœ λ‚΄μš©μ„ λ§ν•©λ‹ˆλ‹€.

    • μ—¬κΈ°μ—μ„œλŠ” "일기 예보"κ°€ children에 ν•΄λ‹Ήλ©λ‹ˆλ‹€.



Modal은 ν™”λ©΄ μœ„μ— λœ¨λŠ” νŒμ—…μ°½ 같은 UI μš”μ†Œμž…λ‹ˆλ‹€.

μ˜ˆμ‹œ μ½”λ“œ

import React from 'react';
import { Modal } from 'react-bootstrap';

type Todo = {
  id: number;
  text: string;
  isChecked: boolean;
};

type TodoModalProps = {
  show: boolean;
  todo: Todo | null;
  handleClose: () => void;
};

const TodoModal: React.FC<TodoModalProps> = ({ show, todo, handleClose }) => {
  return (
    <div>
      <Modal show={show} onHide={handleClose} centered>
        <Modal.Header closeButton>
          <Modal.Title>Todo 상세 정보</Modal.Title>
        </Modal.Header>
        <Modal.Body>{todo?.text}</Modal.Body>
      </Modal>
    </div>
  );
};

export default TodoModal;
  • TodoModalProps : λͺ¨λ‹¬ μ»΄ν¬λ„ŒνŠΈμ˜ props의 νƒ€μž…μ„ μ •μ˜ν•©λ‹ˆλ‹€.

    • show : λͺ¨λ‹¬ ν‘œμ‹œ μ—¬λΆ€

    • todo : μ„ νƒλœ todo

    • handleClose : λ‹«κΈ° λ²„νŠΌ 클릭 μ‹œ μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜

  • <Modal></Modal> : react-bootstrap을 ν™œμš©ν•˜μ—¬ Modal μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.

    • ?. 을 ν™œμš©ν•˜μ—¬ μ„ νƒλœ todoκ°€ 없어도 μž‘λ™λ˜κ²Œ ν•©λ‹ˆλ‹€.

πŸ€” trueλ‚˜ falseκ°’λ§Œμ„ 전달해도 μž‘λ™λ˜λŠ” μ΄μœ λŠ” 뭘까?

react-bootstrap의 Modal μ»΄ν¬λ„ŒνŠΈλŠ” λ‚΄λΆ€μ μœΌλ‘œ showλΌλŠ” propsλ₯Ό κΈ°μ€€μœΌλ‘œ λͺ¨λ‹¬μ„ 보여쀄지 말지λ₯Ό κ²°μ •ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

즉, λ‚΄κ°€ λ”°λ‘œ κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„λ„, react-bootstrap이 show 값을 κΈ°μ€€μœΌλ‘œ λ‹€ μ²˜λ¦¬ν•΄μ£Όμ–΄ κ°’λ§Œ 전달해도 μž‘λ™ν•©λ‹ˆλ‹€.




✏️ 회고

직접 νƒ€μž…μ„ μ„€μ •ν•΄μ„œ λ„£λŠ” 것이 μ΅μˆ™μΉ˜ μ•Šμ•„μ„œ 잘 μ—°μŠ΅ν•΄μ•Ό ν•  것 κ°™λ‹€.

profile
🌱개발 기둝μž₯

0개의 λŒ“κΈ€