首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已上载多个图像,但未在UI中显示(React Js)

问已上载多个图像,但未在UI中显示(React Js)
EN

Stack Overflow用户
提问于 2021-10-06 06:41:29
回答 2查看 41关注 0票数 0

我正在尝试使用react js上传图片,但我不能同时上传多张图片,即使我输入了多张图片。

代码语言:javascript
复制
<input type="file" title="" className={styles.inputFile} multiple={true} onChange={handleChange} />

 const [formData, setFormData] = useState({
    orgId: "6114285831310bfd5b09c28178e",
    orgWallpaper: [],
  }); 

const handleChange = (e) => {
    if (e.target.files && e.target.files[0]) {
      setFormData((form) => ({
        ...form,
        orgWallpaper: [...form.orgWallpaper, URL.createObjectURL(e.target.files[0])],
      }));
    }
  };

{formData?.orgWallpaper?.map((item, key) => (
                  {console.log(item, "mapitem")}
                  <img className={styles.wallpapers + " " + styles.active} src={item} alt="" />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-06 07:25:21

您应该像下面这样更改handleChange

​

代码语言:javascript
复制
const {useState} = React;

const MultipleFilesUpload = () => {
  const [formData, setFormData] = useState({
    orgId: "6114285831310bfd5b09c28178e",
    orgWallpaper: [],
  });

  const handleChange = (e) => {
    var files = e.target.files;
   for (let i = 0; i <files.length; i++) {
   setFormData((form) => ({
        ...form,
        orgWallpaper: [...form.orgWallpaper, URL.createObjectURL(files[i])]})
        )}};
        
  return ( 
  <div>
      <input type="file" title="" multiple onChange={handleChange}/> 
      <div class="gallery">
      {
      formData.orgWallpaper.map((item, key) =>
        <img width ="48px" src ={item} alt= "" />
      )} 
      </div> 
   </div>
)};

ReactDOM.render( <MultipleFilesUpload/> ,
  document.getElementById("root")
);
代码语言:javascript
复制
.gallery {
  display: flex;
}

.gallery img {
  margin: 10px;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>

​

票数 1
EN

Stack Overflow用户

发布于 2021-10-06 06:59:43

您可以查看以下内容:

代码语言:javascript
复制
...(e.target.files?.map(file=>URL.createObjectURL(file))??[])

还删除了控制台日志,这实际上违反了返回语法。如果你想检查console.log,那么还要写一个返回值:

代码语言:javascript
复制
 {formData?.orgWallpaper?.map((item, key) => ( <img key={key} className={styles.wallpapers + " " + styles.active} src={item} alt="" />)
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69460969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档