@abdulghani/promise-modal 中文文档教程

发布于 4年前 浏览 26 项目主页 更新于 3年前

React Promise based Modal

您可以简单地使用 jsx react 组件创建自己的模态组件,并通过函数调用将其呈现为 promise。

  // somewhere in your component
  const handleDelete = (e: MouseEvent) => {
    showModal()
      .then((e) => {
        // do something when confirmed
      })
      .catch((e) => {
        // do something when cancelled
      });
  }

Installation

yarn add @abdulghani/promise-modal\ npm npm install @abdulghani/promise-modal

Usage

准备你的模态组件,它将呈现你的模态至少有 onConfirmonCancel 道具。\ 使用的类型

  onConfirm: (e: MouseEvent) => void;
  onCancel: (e: MouseEvent) => void;

然后你可以从这个包中导入函数。

  import {createModal} from "@abdulghani/promise-modal";

您需要创建要调用的模态承诺实例。

  const deleteModal = createModal(YourModalComponent);

然后您可以调用该函数以在您的组件中显示模态。

  const YourComponent: React.FC = () => {

    const showModal = (e: MouseEvent) => {
      deleteModal()
        .then(e => {
          //  do something when confirmed
        })
        .catch(e => {
          // do something when cancelled
        });
    }

    return (
      <button type="button" onClick={showModal}>Show the modal</button>
    )
  }

Config & Properties

custom root node

默认情况下,它以您的 dom 中的 root 节点 id 为目标来挂载模态元素。\ 您可以通过将根节点 ID 传递给 createModal 函数的第二个参数来自定义它。\ 像这样

  const deleteModal = createModal(YourModalComponent, "my-custom-root");

passing custom props to your modal

您可以通过在您的模态组件上处理它来将自定义道具传递给您的模态,例如 title、description、confirmText、cancelText 等。 并将其传递给显示模态调用。\

  const YourModalComponent = (props: any) => {
    const {onConfirm: any, onCancel: any, title: string, description: string} = props;

    // rest of your modal component
  }

你可以像这样将参数传递给模态

  // somewhere in your main component
  const showModal = (e: MouseEvent) => {
    deleteModal({
      title: "hello world",
      description: "my custom description here"
    })
    .then(e => {
      // do something when confirmed
    })
    .catch(e => {
      // do something when cancelled
    });
  }

React Promise based Modal

You can simply create your own modal component with jsx react component and render it as a promise with a function call.

  // somewhere in your component
  const handleDelete = (e: MouseEvent) => {
    showModal()
      .then((e) => {
        // do something when confirmed
      })
      .catch((e) => {
        // do something when cancelled
      });
  }

Installation

yarn yarn add @abdulghani/promise-modal\ npm npm install @abdulghani/promise-modal

Usage

Prepare your modal component that's going to render your modal that had at least onConfirm and onCancel props.\ with the types of

  onConfirm: (e: MouseEvent) => void;
  onCancel: (e: MouseEvent) => void;

Then you can import the function from this package.

  import {createModal} from "@abdulghani/promise-modal";

You need to create the modal promise instance to call.

  const deleteModal = createModal(YourModalComponent);

Then you can call the function away to show the modal in your component.

  const YourComponent: React.FC = () => {

    const showModal = (e: MouseEvent) => {
      deleteModal()
        .then(e => {
          //  do something when confirmed
        })
        .catch(e => {
          // do something when cancelled
        });
    }

    return (
      <button type="button" onClick={showModal}>Show the modal</button>
    )
  }

Config & Properties

custom root node

By default it targets the root node id in your dom to mount the modal element.\ you could customize that by passing your root node id to the second argument of createModal function.\ like so

  const deleteModal = createModal(YourModalComponent, "my-custom-root");

passing custom props to your modal

You could pass custom props to your modal for example like title, description, confirmText, cancelText, etc by handling it on your modal component. and passing it to the show modal call.\

  const YourModalComponent = (props: any) => {
    const {onConfirm: any, onCancel: any, title: string, description: string} = props;

    // rest of your modal component
  }

and you could pass arguments to the modal like so

  // somewhere in your main component
  const showModal = (e: MouseEvent) => {
    deleteModal({
      title: "hello world",
      description: "my custom description here"
    })
    .then(e => {
      // do something when confirmed
    })
    .catch(e => {
      // do something when cancelled
    });
  }
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文