Open In App

React Suite Modal Dynamic

React suite is a library of React components, sensible UI design, and a friendly development experience. It is supported in all major browsers. It provides pre-built components of React which can be used easily in any web application.

In this article, we’ll learn about React suite Modal Dynamic. The dynamic modal is used when we want to display the dynamic content to our modal. 



Modal Props:

Modal.Header Props:



Modal.Title Props:

Modal.Footer Props:

Modal.Body Props:

Syntax:

import { Modal } from "rsuite";
export default function App() {
    const handleEntered = () => {
        setTimeout(() => 2000);
    };
    return (
        <Modal onEntered={handleEntered}>
            ...
        </Modal>
    );
}

Creating React Application And Installing Module:

Step 1: Create a React application using the given command:

npm create-react-app projectname

Step 2: After creating your project, move to it using the given command:

cd projectname

Step 3: Now Install the rsuite node package using the given command:

npm install rsuite

Project Structure: Now your project structure should look like the following:

 

Example 1: Below example demonstrates the basic implementation of the dynamic modal.




import { useState } from "react";
import { Button, Loader, Modal } from "rsuite";
import "rsuite/dist/rsuite.min.css";
  
export default function App() {
    const [open, setOpen] = useState(false);
    const [rows, setRows] = useState(0);
    const handleOpen = () => setOpen(true);
    const handleClose = () => setOpen(false);
  
    const handleEnter = () => {
        setTimeout(() => setRows(10), 1000);
    };
  
    return (
        <center>
            <div>
                <h2>GeeksforGeeks</h2>
                <h4 style={{ color: "green" }}>
                    React Suite Modal Dynamic</h4>
  
                <div style={{ marginTop: 20, width: 400 }}>
                    <div className="modal-container">
                        <Button onClick={handleOpen} 
                            appearance="primary" color="green">
                                Open</Button>
  
                        <Modal
                            open={open}
                            onClose={handleClose}
                            onEntered={handleEnter}
                            onExited={() => {
                                setRows(0);
                            }}
                        >
                            <Modal.Header>
                                <Modal.Title>GeeksforGeeks</Modal.Title>
                            </Modal.Header>
                            <Modal.Body>
                                {rows ? (
                                    <h3>Thanks for registering on 
                                        GeeksforGeeks portal!</h3>
                                ) : (
                                    <div style={{ textAlign: "center" }}>
                                        <Loader size="lg" />
                                    </div>
                                )}
                            </Modal.Body>
                            <Modal.Footer>
                                <Button onClick={handleClose} 
                                    appearance="primary" color="green">
                                    Ok
                                </Button>
                                <Button onClick={handleClose} 
                                    appearance="subtle">
                                    Close
                                </Button>
                            </Modal.Footer>
                        </Modal>
                    </div>
                </div>
            </div>
        </center>
    );
}

Output:

 

Example 2: Below example demonstrates the implementation of the dynamic modal with an image.




import { useState } from "react";
import { Button, Loader, Modal } from "rsuite";
import "rsuite/dist/rsuite.min.css";
  
export default function App() {
  const [open, setOpen] = useState(false);
  const [rows, setRows] = useState(0);
  const handleOpen = () => setOpen(true);
  const handleClose = () => setOpen(false);
  
  const handleEnter = () => {
    setTimeout(() => setRows(10), 1000);
  };
  
  return (
    <center>
      <div>
        <h2>GeeksforGeeks</h2>
        <h4 style={{ color: "green" }}>
            React Suite Modal Dynamic</h4>
  
        <div style={{ marginTop: 20, width: 400 }}>
          <div className="modal-container">
            <Button onClick={handleOpen} appearance="primary" 
                color="green">Open</Button>
  
            <Modal
              open={open}
              onClose={handleClose}
              onEntered={handleEnter}
              onExited={() => {
                setRows(0);
              }}
            >
              <Modal.Header>
                <Modal.Title>GeeksforGeeks</Modal.Title>
              </Modal.Header>
              <Modal.Body>
                {rows ? (
                  <div>
                    <h3>Welcome to GeeksforGeeks portal!</h3>
                    <img src=
                         alt="GeeksforGeeks" />
                  </div>
                ) : (
                  <div style={{ textAlign: "center" }}>
                    <Loader size="lg" />
                  </div>
                )}
              </Modal.Body>
              <Modal.Footer>
                <Button onClick={handleClose} appearance="primary" 
                        color="green">
                  Ok
                </Button>
                <Button onClick={handleClose} appearance="subtle">
                  Close
                </Button>
              </Modal.Footer>
            </Modal>
          </div>
        </div>
      </div>
    </center>
  );
}

Output:

 

Reference: https://rsuitejs.com/components/modal/#dynamic


Article Tags :