更新:我设法通过安装 3.4.0 版并用单个输入替换两个输入来使其工作:https://codesandbox.io/s/kwy30z9rl3。
我描述的错误可能是由于在更高版本之一中添加了包装器 div 引起的。在最新版本中,react-bootstrap-daterangepicker 将您传递给它的任何子项包装到一个容器中:
render() {
const { children, containerStyles, containerClass } = this.props;
return (
<div
ref={picker => {
this.$picker = $(picker);
}}
className={containerClass}
style={containerStyles}
>
{children}
</div>
);
}
并且 bootstrap-daterangepicker 检查日期选择器的父级是否是输入/按钮并应用必要的事件处理程序:
if (this.element.is('input') || this.element.is('button')) {
this.element.on({
'click.daterangepicker': $.proxy(this.show, this),
'focus.daterangepicker': $.proxy(this.show, this),
'keyup.daterangepicker': $.proxy(this.elementChanged, this),
'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility
});
} else {
this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));
}
而且由于所讨论的元素是一个普通的 div,因此输入上的每次点击或按键都会触发切换。