反应控制组件在Firefox中不会自动完成

反应控制组件在Firefox中不会自动完成,firefox,reactjs,Firefox,Reactjs,在React中使用受控输入时,自动完成功能在Firefox中不起作用,但在Chrome中起作用。所以它与表单元素上的属性autocomplete off无关,因为我没有使用它 这是我用来呈现受控输入元素的代码: <input style={inputStyle} id={this.props.id} type={this.props.type} placeholder={this.props.placeholder} value={this.props.value} onChange={t

在React中使用受控输入时,自动完成功能在Firefox中不起作用,但在Chrome中起作用。所以它与表单元素上的属性autocomplete off无关,因为我没有使用它

这是我用来呈现受控输入元素的代码:

<input style={inputStyle} id={this.props.id} type={this.props.type} placeholder={this.props.placeholder} value={this.props.value} onChange={this.props.onChange} />
这里有两个截图显示它在Firefox中不起作用,但在Chrome中起作用

铬:

火狐:

如果我将受控输入转换为普通输入,那么Firefox也可以使用。这是非常奇怪的部分。

这是一个已知的反应。解决此问题的最佳方法是禁用自动完成,或使用polyfil

或者,您可以在ReactJS之外直接使用DOM处理这种情况,如本期所述:

导出默认类输入扩展组件{
静态类型={
值:PropTypes.string,
onFieldChange:PropTypes.func,
};
静态defaultProps={
值:“”,
}
componentDidMount(){
这个。_listener=setInterval(()=>{
如果(!this.input | | this._previousValue==this.input.value){
返回;
}
this.\u previousValue=this.input.value;
const evt=document.createEvent('HTMLEvents');
evt.initEvent('input',true,true);
此.input.dispatchEvent(evt);
}, 20);
}
组件将卸载(){
clearInterval(此.\u侦听器);
}
refInput=(输入)=>this.input=input;
render(){
常数{标签,
价值
在这场变革中,
}=这是道具;
this.input=this.input | |{value};
返回(
);
}
}

ah的值prop是的,很抱歉,这是一个复制粘贴错误,导致格式错误,在代码中是正确的,我会快速编辑它,希望您找到解决方案。你能分享一下吗?我也有同样的问题。不,这不是问题所在,我认为你不理解我的问题。当autocomplete工作时,它会触发onChange事件。问题是在firefox中,autocomplete不适用于受控组件。
_updateEmail(event) {
    this.setState({email: event.target.value.substr(0, 100)});
}