reactjs - 设置数组后重新渲染组件
问题描述
我正在使用带有功能组件和 Typescript 的 React。我使用 react-dropzone 进行文件上传,因此它具有拖放功能。我的代码是这样的:
<div>
<Dropzone onDrop={acceptedFiles => uploadImages(acceptedFiles)} accept='image/*' multiple={true} >
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
Drag or <a>Browse</a> file to upload
<i className="icon-upload"></i>
</div>
)}
</Dropzone>
<div className="uploaded-images"> ------------------ 1
{appImages.length > 0
? appImages.map((file, i) => (
<div key={i}>
<span>{file.name}</span>
</div>
))
: []}
</div>
</div>
function uploadImages(files: any) {
const imageArray = [];
if (files.length) {
for (let i = 0; i < files.length; i++) {
imageArray.push(files[i]);
}
setAppImages(imageArray);
}
}
因此,uploadImages 函数被调用,但文件名(或第 1 点)的 div 渲染没有发生。在进行了一些调试后,我发现在调用 div(第 1 点)之后,它正在调用 uploadImages 函数。因此,如果在该页面上执行其他操作,则会出现这些文件名。
那么如何重新渲染这个组件或任何其他解决方案呢?
解决方案
推荐阅读
- webpack - Material.io web 与 webpack 错误“找不到要导入的样式表”
- python - 如何计算任意两个字母字符之间的破折号数?
- ios - Alamofire multipartFormData 使用 [String : Any] 参数
- r - 长格式的成对计数数据
- python-3.x - 在python3中使用pandas对A列中每个元素的B列值求和
- camera - 从世界坐标到相机坐标
- php - 使用 php 从 Debian 容器到 IBMi 服务器调用 db2 存储过程时无法获取下一个结果集
- java - 如何使这个 Java 返回命令运行?
- reactjs - react-onsenui中如何使用LazyList组件显示动态数据?
- python - 设置 Postgres celery result_backend 时气流调度程序崩溃