javascript - 如何在 Redux 中集成 FileReader?
问题描述
我评论说我正在阅读官方文档,并且我完全理解它的概念和功能。问题是在现实中应用它要花更多的钱。所以我开始练习,我遇到了一些让我困惑的事情,我想创建一个按钮来加载图像并显示它的预览。但是,这包括一些步骤,例如:
- 验证图像是否已正确上传
- 创建一个文件阅读器
- 更新我的应用程序的状态(路径和图像名称)
- 显示图像
这看起来像这样:
onImageChange(event) {
if (event.target.files && event.target.files[0]) {
let reader = new FileReader();
let file = event.target.files[0];
reader.onloadend = () => {
this.setState({
imageFile: file,
imageName: file.name
});
}
reader.readAsDataURL(file)
}
}
我试图创建一个动作,并且有效负载是图像名称和图像文件,但我不知道将阅读器放在哪里......
这是我目前的组件:
import React, { Component } from "react";
import ImageModalForm from "../../../Commons/components/ImageModalForm";
import { connect } from "react-redux";
import { bindActionCreators } from "redux";
import { loadImage } from "../../actions";
const faceImage = require("../../../../img/face5.gif");
class ThumbnailComp extends Component {
onImageChange(event) {
if (event.target.files && event.target.files[0]) {
let reader = new FileReader();
let file = event.target.files[0];
reader.onloadend = () => {
this.setState({
imageFile: file,
imageName: reader.result
});
};
reader.readAsDataURL(file);
}
}
render() {
return (
<ImageModalForm
imageFile={this.props.imageFile}
imageName={this.props.imageName}
onImageChange={this.onImageChange}
/>
);
}
}
function mapStateToProps(state) {
return {
image: state.image
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({ loadImage }, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(ThumbnailComp);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
欢迎任何更正...谢谢!
解决方案
我有类似的问题,我会这样做。但我不确定...
动作.js
function loadImage(event){
if (event.target.files && event.target.files[0]){
let file = event.target.files[0];
let fileName = file.name
}
return {
type: LOAD_IMAGE,
payload: { imageFile: file, imageFileName: fileName }
}
}
推荐阅读
- javascript - React Hooks 中用于传递参数的点击事件的语法是什么
- css - 浏览器调整大小时如何使第二个div移动到下一行
- python - 从 pandas 数据框创建图形(网络)
- javascript - 如何在Angular中更新表格的单个单元格?
- python - 使用正则表达式 python 和 re.compile 识别 .c 文件或文本文件中的特定模式
- php - Woocommerce 网站 6-7 秒页面加载
- javascript - 如何从express中的异步sqlite查询返回布尔值?
- node.js - 无法让 puppeteer 重用同一浏览器浏览新收集的链接
- python - 如何在 scala 中读取包含在 python 中的长数字
- xpath - 无法使用 xpath 编码匹配精确符号“&”“<”“>”