我正在Overlay触发器中使用Popover进行删除确认控件。主页面有一个项目列表,每个项目都有一个可点击的X按钮,开始与用户的删除交互。接下来显示弹出窗口,用户单击确认继续删除。该对象被删除,集合视图将重新查询应该在列表中的数据。已删除的项目不再位于列表中,但弹出窗口仍然可见。覆盖触发器中的React Bootstrap弹出窗口在删除逻辑父窗口时不会消失
这似乎对我来说真的很奇怪,因为(据我所知)覆盖触发器和弹出式组件不再在任何 render()方法中被引用。
这看起来有些类似于react-bootstrap ModalTrigger doesn't hide when the parent element is unmounted,但与这种情况不同,在这种情况下没有使用keys属性。
相关的方法看起来像......
render() {
return (
<tr
className={this.listStyles()}
>
{this.renderListName()}
{this.renderOwner()}
<td>{this.renderLastModified()}</td>
<td>
{this.renderButtons()}
{this.renderProcessing()}
</td>
</tr>
);
},
renderOverlay() {
return (
<OverlayTrigger
trigger='click'
onEntering={this.handleDeletePopoverOpened}
onExiting={this.handleDeletePopoverClosed}
rootClose
placement='bottom'
overlay={this.renderPopover()}
>
{this.renderDeleteButton()}
</OverlayTrigger>
)
},
renderPopover() {
return (
<Popover id='delete_list' title="Confirm Delete">
<strong>Are you sure?</strong>
<ButtonGroup bsSize='small' className='deletionGroup'>
<Button bsStyle='danger' onClick={this.handleDelete}>Delete</Button>
</ButtonGroup>
</Popover>
)
},
我试着明确断言的状态的酥料饼的渲染,然后设置在componentWillUnmount方法,使得状态它应该隐藏popover。这(正如我们所期望的)也无法工作,毫无疑问,因为代码从不运行,因为渲染方法(正确)未被调用。
我做错了什么?这只是React Bootsrap的缺陷吗?亲切的问候。