当前位置:首页 > React

react实现对话框

2026-01-27 10:01:18React

使用 React 实现对话框

使用 React 内置状态管理

创建一个简单的对话框组件,通过 useState 控制显示与隐藏。

import React, { useState } from 'react';

function Dialog() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <div>
      <button onClick={() => setIsOpen(true)}>打开对话框</button>
      {isOpen && (
        <div className="dialog-overlay">
          <div className="dialog-content">
            <h3>对话框标题</h3>
            <p>对话框内容</p>
            <button onClick={() => setIsOpen(false)}>关闭</button>
          </div>
        </div>
      )}
    </div>
  );
}

export default Dialog;

使用 Portal 优化渲染

通过 ReactDOM.createPortal 将对话框渲染到 body 层级,避免父组件样式影响。

react实现对话框

import React, { useState } from 'react';
import ReactDOM from 'react-dom';

function Dialog() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <div>
      <button onClick={() => setIsOpen(true)}>打开对话框</button>
      {isOpen &&
        ReactDOM.createPortal(
          <div className="dialog-overlay">
            <div className="dialog-content">
              <h3>对话框标题</h3>
              <p>对话框内容</p>
              <button onClick={() => setIsOpen(false)}>关闭</button>
            </div>
          </div>,
          document.body
        )}
    </div>
  );
}

export default Dialog;

使用第三方库(如 Material-UI)

利用现成的对话框组件库快速实现功能。

react实现对话框

import React, { useState } from 'react';
import Button from '@material-ui/core/Button';
import Dialog from '@material-ui/core/Dialog';
import DialogTitle from '@material-ui/core/DialogTitle';
import DialogContent from '@material-ui/core/DialogContent';
import DialogActions from '@material-ui/core/DialogActions';

function MaterialDialog() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <div>
      <Button variant="contained" color="primary" onClick={() => setIsOpen(true)}>
        打开对话框
      </Button>
      <Dialog open={isOpen} onClose={() => setIsOpen(false)}>
        <DialogTitle>对话框标题</DialogTitle>
        <DialogContent>
          <p>对话框内容</p>
        </DialogContent>
        <DialogActions>
          <Button onClick={() => setIsOpen(false)} color="primary">
            关闭
          </Button>
        </DialogActions>
      </Dialog>
    </div>
  );
}

export default MaterialDialog;

自定义动画效果

通过 CSS 或动画库(如 Framer Motion)为对话框添加动画。

import React, { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';

function AnimatedDialog() {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <div>
      <button onClick={() => setIsOpen(true)}>打开对话框</button>
      <AnimatePresence>
        {isOpen && (
          <motion.div
            className="dialog-overlay"
            initial={{ opacity: 0 }}
            animate={{ opacity: 1 }}
            exit={{ opacity: 0 }}
          >
            <motion.div
              className="dialog-content"
              initial={{ y: 50 }}
              animate={{ y: 0 }}
              exit={{ y: 50 }}
            >
              <h3>对话框标题</h3>
              <p>对话框内容</p>
              <button onClick={() => setIsOpen(false)}>关闭</button>
            </motion.div>
          </motion.div>
        )}
      </AnimatePresence>
    </div>
  );
}

export default AnimatedDialog;

对话框传参与回调

通过 props 实现对话框内容的动态传递和回调函数。

import React, { useState } from 'react';

function DynamicDialog({ title, content, onConfirm }) {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <div>
      <button onClick={() => setIsOpen(true)}>打开对话框</button>
      {isOpen && (
        <div className="dialog-overlay">
          <div className="dialog-content">
            <h3>{title}</h3>
            <p>{content}</p>
            <button onClick={() => setIsOpen(false)}>取消</button>
            <button onClick={() => { onConfirm(); setIsOpen(false); }}>确认</button>
          </div>
        </div>
      )}
    </div>
  );
}

export default DynamicDialog;

标签: 对话框react
分享给朋友:

相关文章

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g rea…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment 包。确保项目中已安装 moment.js,因为 react-moment 依赖它。 npm instal…

react如何测试

react如何测试

React 测试方法 React 应用的测试通常涉及组件测试、集成测试和端到端测试。以下是常用的测试工具和方法: Jest Jest 是 Facebook 开发的 JavaScript 测试框架,适…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…