📜  如何在 ReactJS 中使用模态组件?(1)

📅  最后修改于: 2023-12-03 15:38:25.723000             🧑  作者: Mango

如何在 ReactJS 中使用模态组件?

在 ReactJS 中,模态框(Modal)是一种非常常见的组件,可以用于在页面中弹出对话框、提示信息或者表单等。本文将介绍如何在 ReactJS 中使用模态组件。

使用 React-Bootstrap 实现模态组件

React-Bootstrap 是 React 版本的 Bootstrap 框架,其中包含了模态组件。我们可以直接使用 React-Bootstrap 提供的 Modal 组件来实现模态框功能。

安装 React-Bootstrap

首先需要安装 React-Bootstrap:

npm install react-bootstrap
引入 Modal 组件

在代码中引入 Modal 组件:

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

function MyModal() {
  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>Modal body text goes here.</Modal.Body>
        <Modal.Footer>
          <Button variant="secondary" onClick={handleClose}>
            Close
          </Button>
          <Button variant="primary" onClick={handleClose}>
            Save Changes
          </Button>
        </Modal.Footer>
      </Modal>
    </>
  );
}

export default MyModal;

在这个例子中,我们使用了 useState Hook 来管理模态框的显示和隐藏状态。当用户点击按钮时,执行 handleShow() 函数将模态框显示出来,点击模态框上的关闭按钮或者按下 Esc 键时,调用 handleClose() 函数将模态框隐藏。

自定义模态框内容

我们还可以自定义模态框的内容,例如展示一个表单。代码示例:

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

function MyModal() {
  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>
          <Form>
            <Form.Group controlId="formBasicEmail">
              <Form.Label>Email address</Form.Label>
              <Form.Control type="email" placeholder="Enter email" />
              <Form.Text className="text-muted">
                We'll never share your email with anyone else.
              </Form.Text>
            </Form.Group>

            <Form.Group controlId="formBasicPassword">
              <Form.Label>Password</Form.Label>
              <Form.Control type="password" placeholder="Password" />
            </Form.Group>

            <Form.Group controlId="formBasicCheckbox">
              <Form.Check type="checkbox" label="Check me out" />
            </Form.Group>
          </Form>
        </Modal.Body>
        <Modal.Footer>
          <Button variant="secondary" onClick={handleClose}>
            Close
          </Button>
          <Button variant="primary" onClick={handleClose}>
            Save Changes
          </Button>
        </Modal.Footer>
      </Modal>
    </>
  );
}

export default MyModal;

在这个例子中,我们在模态框中展示了一个由 React-Bootstrap 提供的表单组件,并且在模态框底部添加了一个“保存”按钮,用户点击按钮时模态框会隐藏。

使用自定义模态组件

除了使用 React-Bootstrap 提供的 Modal 组件外,我们还可以在项目中自定义模态框组件。代码示例:

import React, { useState } from 'react';
import './MyModal.css';

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

  const handleClose = () => setShow(false);
  const handleShow = () => setShow(true);

  return (
    <>
      <button className="modal-button" onClick={handleShow}>
        Click me
      </button>

      {show && (
        <div className="modal-background">
          <div className="modal-content">
            <div className="modal-header">
              <h3>Modal Heading</h3>
              <button className="modal-close" onClick={handleClose}>
                X
              </button>
            </div>
            <div className="modal-body">
              <p>Modal body text goes here.</p>
            </div>
            <div className="modal-footer">
              <button className="modal-button" onClick={handleClose}>
                Save Changes
              </button>
            </div>
          </div>
        </div>
      )}
    </>
  );
}

export default MyModal;

在这个例子中,我们创建了一个名为 MyModal 的自定义组件,其中包含了一个按钮和一个模态框。当用户点击按钮时,程序便会在页面中展示模态框。我们使用了 useState Hook 来管理模态框的显示和隐藏状态。此外,我们还自定义了模态框的样式和内容。

总结

使用 ReactJS 实现模态组件,可以通过使用 React-Bootstrap 提供的 Modal 组件或者自定义组件的方式来实现。在实际开发中,我们需要根据具体需求选择相应的实现方式。