我试过让它工作,但这是发生了什么。
1.使用react-draggable npm包,我可以使内容变得可拖放,但是整个对话框的背面仍然在原来的位置,而且看起来是坏的。
我还在网上找到了这个
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} />
,我不明白为什么要送 prop ,送什么样的 prop 。
还有
<Modal dialogComponent={DraggableModalDialog} show={true} enforceFocus={false} backdrop="static" {...props}>
〈------{... props}那是干什么的,看起来不像是在给Modal做 prop ,目的是什么,跟
"<ModalDialog {...this.props} />"
?
有谁能给我一个提示,如果这是一个有效的工作,上面两个问题如何工作?
谢谢大家!
3条答案
按热度按时间s1ag04yj1#
对于那些可能还在为
react-bootstrap
的最新版本而苦恼的人(我的版本在写作时是1.0.0-beta.5
),下面是(https://gist.github.com/burgalon/870a68de68c5ed15c416fab63589d503)的修改版本jutyujz02#
我认为这个解决方案更简单,您可以使用整个模态头来拖动模态。
q5lcpyga3#
我收到警告说findDOMNode is deprecated in StrictMode
我可以通过使用nodeRef而不是handle来解决这个问题。我的函数组件/typescript DraggableModalDialog如下所示:
模态分量是这样的(这里稍微简化一下):