【问题标题】:Change react-bootstrap OverlayTrigger Popover's content while displayed显示时更改 react-bootstrap OverlayTrigger Popover 的内容
【发布时间】:2017-08-03 15:42:05
【问题描述】:

我将 react-boostrap 的 Popover 与 OverlayTrigger 类一起使用。我的问题是,当我在显示时更改 Popover 上的内容时,它的大小已正确调整,但位置错误。即使不再与 OverlayTrigger 对齐,popover 也会保持其左上角位置

这就是我要说的:

这是我在渲染函数中使用的代码,非常简单:

const popover = (
        <Popover id={this.props.htKey} >
            {this.state.content}
        </Popover>
);

return (
            <OverlayTrigger
                trigger={["hover", "focus"]}
                delayShow={200}
                placement="top"
                overlay={popover}
                onEntered={this.startExtendTimer}
                onExited={this.resetContent}
            >
                <span>test</span>
            </OverlayTrigger>


 );

startExtenTimer 调用超时,在几秒钟后更改 this.state.content(因此导致我在图片上显示的问题)

如何在保持正确对齐的同时更改弹出框的内容?

【问题讨论】:

  • 贴一些代码...
  • 我添加了一些代码,但我认为它没有帮助,这是一个非常基本的脚本。
  • react-bootstrap 计算组件挂载时的位置。您将不得不以某种方式触发您的重新计算。看看内部代码是如何工作的(react-bootstrap.js:15222)

标签: reactjs react-bootstrap bootstrap-popover


【解决方案1】:

我在这里找到了解决方案:

类似问题:https://github.com/react-bootstrap/react-bootstrap/issues/1438

回答:https://github.com/react-bootstrap/react-overlays/pull/42

您基本上可以将 shouldUpdatePosition 道具添加到 Overlay 组件。

<Overlay ... shouldUpdatePosition={true}  >

我目前的问题是在重新定位之前我有一个丑陋的延迟。我正在研究它,如果找到解决方案会更新

更新:为了消除这种延迟,我只需要在所述叠加内容更新时立即重新渲染包含叠加的组件。

【讨论】:

  • 我在文档react-bootstrap.github.io/components/overlays中找不到该选项?
  • @Andrei Cioara,该选项未记录,如链接中所述。但它确实存在。
  • 我无法让它在 OveralyTrigger 上工作。它只在 Overlay 上退出吗?
  • 你能弄清楚如何使用 OverlayTrigger 做到这一点吗? @AndreiCioara
猜你喜欢
  • 2016-12-18
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多