Javascript e、 preventDefault()或return false无法停止文件输入以打开

Javascript e、 preventDefault()或return false无法停止文件输入以打开,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,如何在上载文件时阻止文件上载窗口打开 export default class Upload extends Component { constructor(props) { super(props); this.state = { filename: null, isLoading: false } } trigger_upload_input = () => {

如何在上载文件时阻止文件上载窗口打开

export default class Upload extends Component {
    constructor(props) {
        super(props);

        this.state = {
            filename: null,
            isLoading: false
        }

    }

    trigger_upload_input = () => {
        document.getElementById("browse-file").click();
    }

    handleOnChange = (e) => {
        if(e.target.files[0]) {
            this.setState({filename: e.target.files[0].name, isLoading: true});
            var that = this;

            setTimeout(function(){
                that.setState({isLoading: false})
            },3000)
        }

    }

    handleInputClicked = (e) => {
        if(this.state.isLoading){
            e.preventDefault();
        }
    }

    render() {
        const { isLoading } = this.state;
        return(
            <div className="upload">
                <div>
                    <input onClick={this.handleInputClicked} onChange={this.handleOnChange} type="file" id="browse-file"/>
                    {this.state.filename && <span>{this.state.filename}</span>}
                </div>
            </div>
        )
    }
}
导出默认类上载扩展组件{
建造师(道具){
超级(道具);
此.state={
文件名:null,
孤岛加载:false
}
}
触发器上传输入=()=>{
document.getElementById(“浏览文件”)。单击();
}
变化=(e)=>{
if(e.target.files[0]){
this.setState({filename:e.target.files[0].name,isLoading:true});
var=这个;
setTimeout(函数(){
that.setState({isLoading:false})
},3000)
}
}
handleInputClicked=(e)=>{
if(此.state.isLoading){
e、 预防默认值();
}
}
render(){
const{isLoading}=this.state;
返回(
{this.state.filename&&{this.state.filename}
)
}
}

加载指示器工作,但当我尝试再次单击输入时,e.preventDefault()不会停止文件窗口的打开,try
return false
没有解决问题?

try
e.stopPropagation()
,可能会有帮助()

更新

看起来,可以使用onChange处理程序添加
禁用的
属性。这将阻止打开对话框。加载完成后可以删除此属性。

您可以像这样攻击浏览器行为

e.target.disabled = true;
setTimeout(function () { e.target.disabled = false; }, 500);

可能只是在输入中添加一个
禁用的
属性,以防止其被单击?