IE11 uses onChange instead of onInput为<input type='range'>
元素。
在IE11中反应does not call either of these。
onInput
适用于FF,Chrome和Edge,所以没关系。
兔子洞向下导致here和here,这建议使用onMouseUp
或onClick
,但我还没有得到这个工作。
我尝试了各种听众组合无济于事。我甚至尝试过this(当然也没用)。有人有解决方法吗?
经过一番挖掘,我已经选择了react-range,因为它轻巧,简单,而且很有效。
render()
在其source展示了它是如何做到的:
render: function() {
var props = _extends({}, this.props, {
defaultValue: this.props.value,
onClick: this.onRangeClick,
onKeyDown: this.onRangeKeyDown,
onMouseMove: this.onRangeChange,
onChange: function() {},
ref: this.setRangeRef
});
delete props.value;
return React.createElement(
'input',
props
);
}
更新
看来这将在React 16中修复:https://github.com/facebook/react/issues/554#issuecomment-271579096
如果您查看上面的历史记录,您会看到该问题已被#5746关闭。如果您打开此PR,您将看到其里程碑设置为16。
所以修复将在16,我们不能把它放在15.x,因为它引入了行为的突破性变化。
我不知道是否有可能将它向后移植到15.x. @jquense和@nhunzaker可能会回答这个问题。