React Bootstrap - Как вручную закрыть OverlayTrigger

у меня естьOverlayTrigger обертываниеPopover который содержит некоторые входные данные формы иButton сохранить данные и закрыть.

save(e) {
  this.setState({ editing: false })
  this.props.handleUpdate(e);
}

render() {
    return (
      <OverlayTrigger trigger="click"
        rootClose={true}
        onExit={this.save.bind(this) }
        show={this.state.editing}
        overlay={
            <Popover title="Time Entry">
              <FormGroup>
                    <ControlLabel>Data: </ControlLabel>
                    <FormControl type={'number'}/>
              </FormGroup>
              <Button onClick={this.save.bind(this) }>Save</Button>
           </Popover>
        }>

я имеюrootClose = trueи мой обратный вызов выполняетсяonExit, но я не вижу способа вручную закрыть оверлей. Я пытаюсь использоватьshow атрибут из начальной загрузкиModal это (как и ожидалось) не работает.

Ответы на вопрос(3)

закройте его при втором нажатии, вот оно:

    <OverlayTrigger trigger="focus" placement="top" overlay={popover}>
        <a tabindex="0">Some text</a>
    </OverlayTrigger>
Решение Вопроса

Добавить ссылку на<OverlayTrigger ref="overlay"... элемент и вызватьhide метод, как только элемент был представлен. Не проверял это, но должно работать:

this.refs.overlay.hide();
 Todd Chambery20 июл. 2016 г., 18:06
У нас есть директива, чтобы избежатьrefЭто возможно, но это прекрасно работает.
 dst3p13 февр. 2019 г., 20:02
Для Реакта 16.hide() работал, но с другим синтаксисом. Я должен был использовать<OverlayTrigger ref={(ref) => this.overlay = ref}> а затем позвонитеthis.overlay.hide();.
 Lars Nyström16 февр. 2017 г., 17:19
Это не работает с реакцией-начальной загрузкой 0.30.7 и реакцией 15.4.2. Вы знаете, как сделать это сейчас?
 Igorsvee16 февр. 2017 г., 17:37
Я не могу проверить это прямо сейчас, но это должно работать, потому что API все еще содержит метод hide [github.com/react-bootstrap/react-bootstrap/blob/v0.30.7/src/...или вы можете попробовать с этим [github.com/react-bootstrap/react-bootstrap/blob/v0.30.7/src/...

<OverlayTrigger rootClose={true}... а затем на вашемonClick вызов триггераdocument.body.click().

 Shrihari Balasubramani20 авг. 2018 г., 11:00
это не решение, когда у вас открыта вложенная подсказка
 Brendan Turner12 дек. 2017 г., 18:16
Очень умно. Хороший ответ.
 Rahul Yadav01 июн. 2018 г., 16:39
Мне нужно установить флаг, когда поповер закрывается, есть ли у него событие закрытия, которое я могу прослушать, и установить свой флаг в обратном вызове

Ваш ответ на вопрос