gpt4 book ai didi

javascript - 如何创建带有过渡的 React Modal(附加到 )?

转载 作者:IT王子 更新时间:2023-10-29 03:02:10 24 4
gpt4 key购买 nike

这个答案中有一个模态 https://stackoverflow.com/a/26789089/883571通过将其附加到 <body> 来创建基于 React 的模态.但是,我发现它与 React 提供的过渡插件不兼容。

如何创建一个带有转换的(进入和离开期间)?

最佳答案

在 React conf 2015 上,Ryan Florence demonstrated using portals .以下是创建简单的 Portal 组件的方法...

var Portal = React.createClass({
render: () => null,
portalElement: null,
componentDidMount() {
var p = this.props.portalId && document.getElementById(this.props.portalId);
if (!p) {
var p = document.createElement('div');
p.id = this.props.portalId;
document.body.appendChild(p);
}
this.portalElement = p;
this.componentDidUpdate();
},
componentWillUnmount() {
document.body.removeChild(this.portalElement);
},
componentDidUpdate() {
React.render(<div {...this.props}>{this.props.children}</div>, this.portalElement);
}
});

然后您通常可以在 React 中执行的所有操作都可以在门户内部执行...

    <Portal className="DialogGroup">
<ReactCSSTransitionGroup transitionName="Dialog-anim">
{ activeDialog === 1 &&
<div key="0" className="Dialog">
This is an animated dialog
</div> }
</ReactCSSTransitionGroup>
</Portal>

jsbin demo

您还可以查看 Ryan 的 react-modal , 虽然我没有实际使用过它所以我不知道它与动画的配合情况如何。

关于javascript - 如何创建带有过渡的 React Modal(附加到 <body>)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com