React中几种编写弹窗的方式

方式一:按钮与弹窗封装成一个组件

将按钮和弹窗封装成一个组件,可以大大提高 React 代码的可重用性、可维护性和可扩展性。以下是示例代码:

import React, { useState } from "react";
import { Button, Modal } from "antd";

const MixWay = (props) => {
  const [visiable, setVisiable] = useState(false);

  const onOk = () => {
    console.log("编写自己的onOk逻辑");
    closeModal();
  };

  const closeModal = () => {
    setVisiable(false);
  };

  return (
    <>
       setVisiable(true)}>按钮+弹窗
      
        

弹窗内容

      
       ); }; export default MixWay;

封装成一个组件后,我们可以轻松地复用该组件并根据需要进行扩展。

实际例子

比如下面两个回放按钮

React中几种编写弹窗的方式_第1张图片

按钮
  • 单批次回放

React中几种编写弹窗的方式_第2张图片

单批次回放
  • 单接口批量回放

React中几种编写弹窗的方式_第3张图片

单接口批量回放

两者弹窗内容基本一致,只是单接口批量回放需要指定接口,单批回放不需要指定接口

所以将它封装成一个组件

方式二:函数式弹出弹窗

https://juejin.cn/post/7130623457993162759

https://opensource.ebay.com/nice-modal-react/#real

使用https://github.com/ebay/nice-modal-react,它帮助我们快速创建弹框,写起来更加简洁

MyModal弹窗

import React from "react";
import NiceModal, { useModal } from "@ebay/nice-modal-react";
import { Modal } from "antd";

const MyModal = NiceModal.create((props) => {
  const { name } = props;
  const modal = useModal();

  const onOk = () => {
    console.log("编写自己的onOk逻辑");
    modal.hide();
  };

  return (
    
      Greetings: {name}!
    
  );
});

MyModal.propTypes = {};

export default MyModal;

AntdSample使用

import React from "react";
import { Button } from "antd";
import NiceModal from "@ebay/nice-modal-react";
import MyModal from "./MyModal";

const AntdSample = () => {
  return (
    <>
       NiceModal.show(MyModal, { name: "Nate" })}>
        Show Modal
      
    
  );
};

export default AntdSample;

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import NiceModal from "@ebay/nice-modal-react";

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  
    
      
    
  
);

这段代码使用了 NiceModaluseModal,这是 eBay 开发的一个 React 组件库,能够帮助我们快速创建模态框(Modal)。使用它有以下好处:

  1. 代码简洁:NiceModal 将 Modal 的显示逻辑和 UI 逻辑封装好,我们只需要编写自己的逻辑即可。在这段代码中,我们只需要编写 MyModal 组件的内容,而不用关心 Modal 的显示和关闭逻辑。

  2. 可维护性高:使用 NiceModal,我们可以将重复的 Modal 逻辑封装成一个组件,便于统一管理和维护。下次再有类似的 Modal 需求时,我们只需要拿出这个组件进行改造即可。

  3. 可扩展性好:NiceModal 提供了一些钩子函数(例如 useModal)和配置项,可以方便地扩展自己的 Modal 组件。例如,在 MyModal 组件中使用了 useModal 钩子函数获取 modal 对象,然后就可以调用它提供的一些方法(例如 hide())来控制 Modal 的显示和关闭。

小结

以上两种编写弹窗的方式,方式二使用 nice-modal-react 更加简洁,不需要手动编写显示关闭逻辑。

你可能感兴趣的:(react.js,javascript,ecmascript,前端,前端框架)