Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数不返回?_Javascript_Reactjs - Fatal编程技术网

Javascript 函数不返回?

Javascript 函数不返回?,javascript,reactjs,Javascript,Reactjs,所以我不确定为什么这段代码不起作用。我拥有的是组件接受的文件类型数组。我尝试迭代该数组,并检查正在上载的文件是否属于这些类型之一。如果不是,则I返回。由于某种原因,下面的代码acceptedFormats.forEach继续运行。如果我console.logaudioType和file.type我会得到一个无效的。那么,它不应该又回来了吗?谢谢 类上载扩展了React.Component{ 状态={ 百分比:0, 上传:假 } handleUpload=(e)=>{ if(this.state

所以我不确定为什么这段代码不起作用。我拥有的是组件接受的文件类型数组。我尝试迭代该数组,并检查正在上载的文件是否属于这些类型之一。如果不是,则I
返回。由于某种原因,下面的代码
acceptedFormats.forEach
继续运行。如果我
console.log
audioType
file.type
我会得到一个
无效的
。那么,它不应该又回来了吗?谢谢

类上载扩展了React.Component{
状态={
百分比:0,
上传:假
}
handleUpload=(e)=>{
if(this.state.uploading){
回来
}
const file=e.target.files[0];
const acceptedFormats=[“音频/wav”、“音频/mp3”、“音频/m4a”];
//TODO:找出这不起作用的原因
acceptedFormats.forEach((audioType)=>{
console.log(audioType);
console.log(file.type);
if(audioType!==file.type){
console.log('INVALID');
回来
}
})
const audioRef=storageRef.child('audio/'+file.name);
const task=audioRef.put(文件);
任务上('state_changed',函数(快照){
const progress=(snapshot.bytesttransfered/snapshot.totalBytes)*100;
log('Upload is'+progress+'%done');
此.setState(()=>({
百分比:进展
}))
}.bind(此)、函数(错误){
},函数(){
const downloadURL=task.snapshot.downloadURL;
const fileName=task.snapshot.metadata.name;
让songName=removeFileExtension(file.name);
songName.replace(/\./g',);
db.ref(`users/${this.props.uid}/uploadedSongs/`).push({
下载网址:,
文件名,
歌名,
}).然后(()=>{
这是我的国家({
百分比:0,
上传:假
})
Alert.success(`Upload successful`{
位置:'右上',
效果:“幻灯片”,
超时:3000
})
})
}.约束(这个);
}
render(){
返回(
{this.state.uploading?“上传”:“上传歌曲”}
this.handleUpload(e)}disabled={this.state.uploading?true:false}/>
接受的格式:.wav、.mp3、.m4a
);
}
}
ReactDOM.render(,document.querySelector('#u')

示例上载

返回
内的
。forEach()
回调不会阻止
.forEach()
回调范围外的其他代码运行。您可以使用
.some()
返回一个
布尔值
true
false
和一个
if
条件和语句,以
返回
如果从
调用返回
true

  if (acceptedFormats.some(audioType => {
      console.log(audioType);
      console.log(file.type);
      return audioType !== file.type
  })) {
      console.log('INVALID');
      return;
  }

我不会这样说:“如果我对audioType和file.type进行console.log,我会得到一个无效的值。”记录这些内容不会返回“INVALID”。你是想说你进入了
if(audioType!==file.type)
块吗?这是纯Javascript吗?Javascript是否像您现在所做的那样接受关键字
扩展
?你想返回一个值还是只是停止进程?我清理了它,使其可以运行…这显然是React.js,所以我添加了tagmable replicate