是否可以在关闭之前阻止 Reactstrap 模态卸载?

Posted

技术标签:

【中文标题】是否可以在关闭之前阻止 Reactstrap 模态卸载?【英文标题】:Is it possible to keep a Reactstrap modal from unmounting before it has closed? 【发布时间】:2020-03-30 01:01:12 【问题描述】:

我有一个包含 Reactstrap 模式的组件。当模态函数完成时,将调用切换函数。此外,不再安装模态框,因为应该显示不同的组件。不幸的是,这导致模态消失而不是转换。我正在寻找在过渡完成之前保持安装状态的最佳方法。

这是用于卸载的代码 (LoginModal 是正在卸载的模式)

render() 
    const  isAuthenticated = this.props;

    const authLinks = (
      <Fragment>
        <Nav navbar>

        </Nav>

        <Nav navbar>
          <NavItem>
            <Logout></Logout>
          </NavItem>
        </Nav>
      </Fragment>
    );

    const guestLinks = (
      <Fragment>
        <Nav>
          <NavItem>
            <LoginModal></LoginModal>
          </NavItem>
        </Nav>
      </Fragment>
    );

    return (
      <Navbar>
          isAuthenticated ? authLinks : guestLinks
        </Collapse>
      </Navbar>
    );

【问题讨论】:

你能提供一些关于如何卸载它的代码吗? @JatinParmar 我在原帖中添加了一些代码 请检查答案,希望对你有用 【参考方案1】:

这是因为当您获得授权而不是使用关闭模式时 isOpen=false 你直接从父组件中删除它 您应该像这样将 isOpen 从父级传递到登录模式

render() 
const  isAuthenticated = this.props;

let authLinks=null;
let isOpen=false;

if(!isAuthenticated)isOpen=true;//we need to show login when user is not logged in
if(!isOpen)
    //when user is not logged in we will create nav link
    authLinks = (
      <Fragment>
        <Nav navbar>
        </Nav>
        <Nav navbar>
          <NavItem>
            <Logout></Logout>
          </NavItem>
        </Nav>
      </Fragment>
    );

//instead of not rendering when authenticated,you should pass isopen=false
//here isOpen from login modal will be passed to react strap modal
//isOpen=false will cause dialog modal to close with transition
const loginModal = (
        <LoginModal isOpen=isOpen ></LoginModal>
);

return (
  <Navbar>
      loginModal
      authLinks
    </Collapse>
  </Navbar>
);

您可以进一步阅读here

【讨论】:

我认为你误解了这个问题,isAuthenticated 不应该打开/关闭模式,而是显示/隐藏切换模式的按钮。 @GICMan 是的,但根据您的代码,可能不会导致这种看法

以上是关于是否可以在关闭之前阻止 Reactstrap 模态卸载?的主要内容,如果未能解决你的问题,请参考以下文章

单击文本区域时,iOS 上的 reactstrap 模态关闭(仅在编辑时)

如何在 onClick 函数中将繁忙的光标添加到 reactstrap 模态按钮。该功能是一个承诺

React.js + Reactstrap 多个模态在一个组件中

如何阻止我的模态对话框在按钮单击时关闭?

如何使具有动态内容的reactstrap模态可调整大小和可拖动?

React,Reactstrap - 输入与输入,表单控制类阻止值提交,返回未定义