react怎么做弹框 - 网站

react怎么做弹框

分类:React入门教程_React框架基础教程 · 发布时间:2020-09-23 14:39 · 阅读:2083

react做弹框的方法:

弹窗设计

将整个弹窗拆分为一个UI组件(Dialog),一个处理函数部分(Staticize)

Dialog

Props

  • title:弹窗标题

  • message:内容信息

  • onConfirm: 确认时调用的函数,

  • onCancel:点击关闭或取消时,调用的函数

import React from 'react'
import cx from 'classnames'
import SVGIcon from 'components/SVGIcon'
import styles from './Dialog.scss'
const Dialog = ({
  title,
  message,
  onConfirm,
  onCancel,
}) => (
  <div className={styles.root}>
    <div className={styles.header}>
      <SVGIcon
        className={styles.icon}
        name="dialog/warning"
        width="32"
        height="32"
      />
      <div className={styles.title}>{title}</div>
    </div>
    <div className={styles.message}>{message}</div>
    <div className={styles.buttons}>
        <button className={styles.button} onClick={onCancel}>
           取消
        </button>
      <button className={cx(styles.button, styles.active)} onClick={onConfirm}>
        确定
      </button>
    </div>
  </div>
)
export default Dialog

Staticize

Props

  • title:弹窗标题

  • message:内容信息

函数行为

  • 返回一个Promise 对象,接收一个 fullfill

  • 作为 Resolve 时参数。

  • 创建一个div, 并添加到 body 中,在该 div 中渲染出 Dialog。

  • close 函数移除该 div, 并作为Dialog 的 onCancel 属性

  • onConfirm 中 执行 fullfill 和 close

import React from 'react'
import ReactDOM from 'react-dom'
import Dialog from './Dialog'
const staticize = props =>
  new Promise((fulfill) => { // 此处参数需用圆括号,否则 eslint 报错
    const holder = document.createElement('div')
    document.body.appendChild(holder)
    const close = () => {
      document.body.removeChild(holder)
    }
    ReactDOM.render(
      <Dialog
        {...props}
        onCancel={close}
        onConfirm={() => {
          close()
          fulfill()
        }}
      />,
      holder
    )
  })
export default staticize

相关学习推荐:react视频教程

标签:
react 弹框

相关文章

react中怎么使用sass?

方法:1、使用npm工具安装sass-loader和node-sass依赖;2、配置webpack.config.js文件;3、在需要的组件中引入scss,然后添加scss代码即可。

react怎么判断checkbox是否被选中

react判断checkbox是否被选中的方法:可以通过【if ($(&quot;#checkbox-id&quot;).get(0).checked) {}】方法来进行判断。还可以通过原生js方法来进行判断,如【ele.checked】。

react子组件如何向父组件传值?

在react中,首先通过父组件给子组件传递一个函数,然后子组件通过参数传到父组件,通过props来传递函数的引用,并通过回调的方式实现;其实就是子组件调用父组件的方法,把值以形参的方式传出来。

react组件什么时候会重新渲染?

每当组件状态改变时,React就会调用render函数进行重新渲染。更改状态意味着当调用setState函数时,React触发更新;这不仅意味着将调用组件的render函数,而且还意味着重新渲染其所有后续子组件,无论其prop是否已更改。

react组件生命周期有几个阶段?

React组件生命周期有三个阶段:加载、更新和卸载。加载阶段表示一个组件实例被创建并被插入到DOM中;更新阶段表示由状态或属性的改变导致组件的重新渲染;卸载阶段表示组件从DOM中移除。

返回分类 返回首页