[React] ๐Ÿ‘พReact Bootstrap ์‚ฌ์šฉ๋ฒ•

TATAยท2023๋…„ 8์›” 17์ผ
0

React

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

โ–ท React Bootstrap

React ๊ธฐ๋ฐ˜์˜ UI ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๋ฏธ๋ฆฌ ๋””์ž์ธ๋œ ์ปดํฌ๋„ŒํŠธ์™€ ์Šคํƒ€์ผ์„ ์ œ๊ณตํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค.

๐Ÿ‘พ ์„ค์น˜

npm install react-bootstrap bootstrap

๐Ÿ‘พ index.js

index.jsํŒŒ์ผ์—์„œ import ํ•ด์ฃผ๊ธฐ

/* index.js */
import 'bootstrap/dist/css/bootstrap.min.css'; 

๐Ÿ‘พ Dropdown

import Dropdown from 'react-bootstrap/Dropdown';

function BasicExample() {
  return (
    // Dropdown ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑ
    <Dropdown>
      // ๋“œ๋กญ๋‹ค์šด ๋ฒ„ํŠผ์„ ์ƒ์„ฑ
      <Dropdown.Toggle id="dropdown-basic">
        Dropdown Button
      </Dropdown.Toggle>

      // ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ์ƒ์„ฑ
      <Dropdown.Menu>
        // ๊ฐ๊ฐ์˜ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ์•„์ดํ…œ์„ ์ƒ์„ฑ
        <Dropdown.Item href="#/action-1">Action</Dropdown.Item>
        <Dropdown.Item href="#/action-2">Another action</Dropdown.Item>
        <Dropdown.Item href="#/action-3">Something else</Dropdown.Item>
      </Dropdown.Menu>
    </Dropdown>
  );
}

export default BasicExample;

๐Ÿ‘พ Modals

import { useState } from 'react';
import Button from 'react-bootstrap/Button';
import Modal from 'react-bootstrap/Modal';

function Example() {
  const [show, setShow] = useState(false);

  const handleClose = () => setShow(false); // ๋ชจ๋‹ฌ์„ ๋‹ซ๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜
  const handleShow = () => setShow(true); // ๋ชจ๋‹ฌ์„ ์—ด๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜

  return (
    <>
      <Button variant="primary" onClick={handleShow}>
        Launch demo modal
      </Button>

      // ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ
      <Modal show={show} onHide={handleClose}>
        // ๋ชจ๋‹ฌ ํ—ค๋”
        <Modal.Header closeButton>
          <Modal.Title>Modal heading</Modal.Title>
        </Modal.Header>
        // ๋ชจ๋‹ฌ ๋‚ด์šฉ
        <Modal.Body>Woohoo, you are reading this text in a modal!</Modal.Body>
        // ๋ชจ๋‹ฌ ํ‘ธํ„ฐ
        <Modal.Footer>
          // ๋‹ซ๊ธฐ ๋ฒ„ํŠผ
          <Button variant="secondary" onClick={handleClose}>
            Close
          </Button>
          // ์ €์žฅ ๋ฒ„ํŠผ
          <Button variant="primary" onClick={handleClose}>
            Save Changes
          </Button>
        </Modal.Footer>
      </Modal>
    </>
  );
}

export default Example;

๐Ÿ‘พ Form

import Button from 'react-bootstrap/Button';
import Col from 'react-bootstrap/Col';
import Form from 'react-bootstrap/Form';

...
<Form.Group
  controlId="validationFormik101"
  className="position-relative"
>
  <Form.Label>First name</Form.Label>
  <Form.Control
    type="text" // ์ž…๋ ฅ ํ•„๋“œ ํƒ€์ž…์€ ํ…์ŠคํŠธ
    name="firstName" // ํผ ํ•„๋“œ์˜ ์ด๋ฆ„
    value={values.firstName}
    onChange={handleChange}
    isValid={touched.firstName && !errors.firstName} // ์œ ํšจํ•œ ๊ฐ’์ธ ๊ฒฝ์šฐ ์Šคํƒ€์ผ์„ ์ ์šฉ
  />
</Form.Group>



Nav, Overlay, Accordion ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
๐Ÿ‘‰ (๊ณต์‹๋ฌธ์„œ)react-bootstrap
๐Ÿ‘‰ Material UI๋กœ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๐Ÿ‘‰ react-native์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” native-base

profile
๐Ÿพ

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

comment-user-thumbnail
2023๋…„ 8์›” 17์ผ

์ •๋ฆฌ๊ฐ€ ์ž˜ ๋œ ๊ธ€์ด๋„ค์š”. ๋„์›€์ด ๋์Šต๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ