【发布时间】:2021-09-05 17:48:05
【问题描述】:
我是 React 的初学者,并尝试运行一个异步函数来实现这一点,但是它一直在中断,我不确定我做错了什么。
应用当前在做什么:
- 我输入一个文件并点击上传以发布它
- 文件上传并设置状态,显示预览
- 然后我点击提交提交表单。
应该怎么做
- 在我输入文件后自动“上传”文件 (onChange)
- 等到文件上传到 Firestore 后才允许提交表单
我的处理程序
event.preventDefault();
if (this.state.screamImage === "") {
this.props.postScream({
productName: this.state.productName,
body: this.state.body,
price: this.state.price,
charge: this.state.charge,
screamImage:
"https://firebasestorage.googleapis.com/v0/b/auth-development-2fa3c.appspot.com/o/no-img2.jpg?alt=media",
});
} else
this.props.postScream({
productName: this.state.productName,
body: this.state.body,
price: this.state.price,
charge: this.state.charge,
screamImage: this.screamData,
});
};
fileOnChange = (event) => {
this.setState({
[event.target.name]: event.target.files[0],
});
};
fileUploadHandler = () => {
const formData = new FormData();
formData.append(
"image",
this.state.screamImage,
this.state.screamImage.name
);
axios.post("/scream/image", formData).then((res) => {
this.screamData = res.data.screamImageUrl;
console.log(this.screamData);
return this.screamData;
});
};
回归
<input
type="file"
name="screamImage"
onChange={this.fileOnChange}
/>
<Button onClick={this.fileUploadHandler}>Upload</Button>
<Button
type="submit"
variant="contained"
color="primary"
className={classes.submitButton}
disabled={loading}
>
Submit
{loading && (
<CircularProgress
size={30}
className={classes.progressSpinner}
/>
)}
对不起,如果这只是一个简单的修复,我似乎还无法掌握异步函数的窍门。谢谢!
【问题讨论】:
标签: javascript reactjs firebase asynchronous axios