ReactBootstrap popover在外面点击时解除

Not*_*ple 8 twitter-bootstrap reactjs react-bootstrap

ReactBootstrap提供了一个弹出控件.我希望在弹出窗口外部以与模态工作方式类似的方式解除此问题(默认情况下只需单击开箱即可解除).

有没有办法使用ReactBootstrap来做到这一点,还是我需要自定义代码?

一个popf的JSfiddle:http://jsfiddle.net/226cwe4e/

React.createClass({
    render: function() {
        return <ReactBootstrap.OverlayTrigger trigger="click" placement="bottom" overlay={<ReactBootstrap.Popover title="Popover bottom"><strong>Holy guacamole!</strong> Check this info.</ReactBootstrap.Popover>}>
        <ReactBootstrap.Button bsStyle="default">Holy guacamole!</ReactBootstrap.Button>
      </ReactBootstrap.OverlayTrigger>;
    }
});
Run Code Online (Sandbox Code Playgroud)

mak*_*uno 26

不,你不需要任何自定义代码.只需包括rootClose道具,这将为你做.它在反应引导官方文档中https://react-bootstrap.netlify.com/components/overlays/#overlays-api

<OverlayTrigger trigger='click' rootClose>
  ....
</OverlayTrigger>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!!我看起来很难 (3认同)

kno*_*ody 2

我认为这应该对你有用:

const Hello = () => (
  <ReactBootstrap.OverlayTrigger 
    trigger="focus" 
    placement="bottom" 
    overlay={
      <ReactBootstrap.Popover title="Popover bottom">
        <strong>Holy guacamole!</strong> Check this info.   
      </ReactBootstrap.Popover>
    }
  >
    <ReactBootstrap.Button bsStyle="default">Holy guacamole!</ReactBootstrap.Button>
  </ReactBootstrap.OverlayTrigger>
);

ReactDOM.render(<Hello />, document.getElementById('app'));
Run Code Online (Sandbox Code Playgroud)

这是jsfiddle

  • “不建议对弹出窗口使用“悬停”或“焦点”触发器,因为它们在键盘和移动设备上的可访问性较差。” 最好突出显示您更改的内容以及为什么它可以解决问题,而不仅仅是粘贴代码。 (2认同)