react提示框几秒_react 弹窗modal问题

最近写了一个react项目,关于react的modal实现有一些新的收获。

about vue

之前在vue里面实现弹窗是通过Vue.extend来实现弹窗的挂载,在需要弹窗的时候才把弹窗挂载在页面上,当弹窗需要被关闭的时候将弹窗组件从页面元素中卸载即可。这种实现方式,在页面有大量弹窗的时候非常方便,需要的时候才被加载,避免大量弹窗写在页面里面造成卡顿现象。

具体代码如下

about react

在写react的时候,也遇见了同样的情况。最开始 使用antd的modal,通过一个bool值来实现显示与否,写到后面,弹窗嵌套越来越多,层级也比较深。再通过布尔值就有点不太美观。于是寻找类似于vue的解决方案,最终在reactdom的方法中,找到了一个类似实现方法。

ReactDOM.unstable_renderSubtreeIntoContainer()这个方法类似于render方法,都是把组件挂载在页面上,但是不同于render挂载的位置是组件被引用的时候就确定的,这个方法可以自己指定挂载的位置即父组件。我看网上大多人使用这个方法是在modal组件生命钩子里面,来自己控制挂载与卸载,可是如果这样的话,好像跟我想要的方向有些差别,跟上面用布尔值好像没太大差。我把这个方法放在调用弹窗的父组件里面,当父组件对应的事件被触发,再将子组件挂载上去,这样弹窗的挂载与卸载都是在父组件里面控制的,当多层弹窗嵌套的时候,这样用起来非常方便。好啦,大致的代码如下

写到这里,感觉vue跟react的一些非公开的api还是相当好用的,如果有空的话,要多做了解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中的Modal组件可以用于实现弹窗提示框等功能。下面是一个简单的Modal组件的封装示例: ```jsx import React from 'react'; import ReactDOM from 'react-dom'; const modalRoot = document.getElementById('modal-root'); class Modal extends React.Component { constructor(props) { super(props); this.el = document.createElement('div'); } componentDidMount() { modalRoot.appendChild(this.el); } componentWillUnmount() { modalRoot.removeChild(this.el); } render() { const { children, onClose } = this.props; return ReactDOM.createPortal( <div className="modal"> <div className="modal-content"> {children} <button onClick={onClose}>Close</button> </div> </div>, this.el ); } } export default Modal; ``` 在上述代码中,我们定义了一个名为Modal的组件,并使用ReactDOM.createPortal方法将其渲染到modalRoot中,实现了Modal的弹出效果。Modal组件接收两个props,分别是children和onClose。其中,children用于传递Modal中的内容,onClose用于处理Modal关闭事件。 使用Modal组件时,我们可以在父组件中定义一个state,用于控制Modal的显示和隐藏: ```jsx import React from 'react'; import Modal from './Modal'; class App extends React.Component { state = { showModal: false } handleOpenModal = () => { this.setState({ showModal: true }); } handleCloseModal = () => { this.setState({ showModal: false }); } render() { const { showModal } = this.state; return ( <div> <button onClick={this.handleOpenModal}>Open Modal</button> {showModal && <Modal onClose={this.handleCloseModal}> <h2>Modal Title</h2> <p>Modal Content</p> </Modal> } </div> ); } } export default App; ``` 在上述代码中,我们在父组件中定义了一个showModal状态,用于控制Modal的显示和隐藏。当用户点击“Open Modal”按钮时,我们将showModal设置为true,从而显示Modal组件。当用户点击Modal中的“Close”按钮时,我们调用handleCloseModal方法,将showModal设置为false,从而隐藏Modal组件。 通过封装Modal组件,我们可以在React应用中方便地实现弹窗提示框等功能,并且可以灵活地控制Modal的显示和隐藏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值