如何使react-bootstrap模态可拖动

时间:2017-08-28 23:32:22

标签: reactjs bootstrap-modal draggable react-bootstrap

我已尝试让它发挥作用,但这就是发生的事情。

  1. 使用反应可拖动的npm包,我能够使内容可拖动和可放置。但整个对话框的后面仍然存在,之后看起来很破碎。
  2. 我也在网上找到了这个  https://gist.github.com/burgalon/870a68de68c5ed15c416fab63589d503

    import { Modal } from 'react-bootstrap'
    import ModalDialog from 'react-bootstrap/lib/ModalDialog'
    import Draggable from 'react-draggable'
    
    class DraggableModalDialog extends React.Component {
        render() {
            return <Draggable handle=".modal-title"><ModalDialog 
    {...this.props} /></Draggable>
        }
    }
    
    // enforceForce=false causes recursion exception otherwise....
    export default ({titleIconClass, modalClass, children, title,...props}) =>
    <Modal dialogComponent={DraggableModalDialog} show={true} enforceFocus={false} backdrop="static" {...props}>
        <Modal.Header closeButton>
            <Modal.Title>
                {title}
            </Modal.Title>
        </Modal.Header>
        <Modal.Body>
            {children}
        </Modal.Body>
    </Modal>
    

    我从搜索中得到的这段代码,我实际上无法实现这一点。

    特别是这个,

    <ModalDialog {...this.props} />
    

    ,我不明白为什么要发送道具以及发送什么样的道具。

    并且

    <Modal dialogComponent={DraggableModalDialog} show={true} enforceFocus={false} backdrop="static" {...props}>
    

    &lt; ------ {... props}那是做什么的?它似乎不像给莫代尔提供道具。它的目的是什么?是否与

    相关
    "<ModalDialog {...this.props} />"
    

    如果这是一项有效的工作,有人可以给我一个暗示上述两​​个问题是如何工作的吗?

    谢谢!

1 个答案:

答案 0 :(得分:0)

对于可能仍在使用最新版本的react-bootstrap(在撰写本文时我是1.0.0-beta.5)的任何人。这是(https://gist.github.com/burgalon/870a68de68c5ed15c416fab63589d503

的修改版本
import React, { Component } from "react";
import Modal from "react-bootstrap/Modal";
import Draggable from 'react-draggable';
import ModalDialog from 'react-bootstrap/ModalDialog';

class DraggableModalDialog extends React.Component {
    render() {
        return <Draggable handle=".modal-title"><ModalDialog {...this.props} /> 
   </Draggable>
    }
}

export default class BSModal extends Component {

render() {
    return (
        <Modal
                dialogAs={DraggableModalDialog} 
                show={this.props.show} 
                onHide={this.props.close}>
            <Modal.Header>
                <Modal.Title>{this.props.title}</Modal.Title>
            </Modal.Header>
            <Modal.Body>
                {this.props.children}
            </Modal.Body>
            <Modal.Footer >
            </Modal.Footer>
        </Modal>
    );
}
}