2016-04-14 48 views
2

我正在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的缺陷吗?亲切的问候。

回答

1

年之久的问题,所以我希望你想通了:-)

解决同样的问题存在:我加入rootClose到我的触发解决了这个问题。

相关问题