reactJS材质UI图标按钮上传文件

IT技术 reactjs material-ui
2021-04-27 15:59:24

我想知道如何使用 IconButton 打开目录以上传文件?

<IconButton 
  iconClassName="fa fa-plus-square" 
  onClick={(e) => e.stopPropagation()} 
  type='file'
/>

使用下面的代码显示上传文件的图标按钮和另一个按钮

<IconButton iconClassName="fa fa-plus-square" onClick={(e) => e.stopPropagation()}>
    <input type="file type='file'>
</IconButton>
3个回答

我认为材料 ui 示例的标准方法:


 <input accept="image/*" className={classes.input} id="icon-button-file" type="file" />
  <label htmlFor="icon-button-file">
    <IconButton color="primary" className={classes.button} component="span">
      <PhotoCamera />
    </IconButton>
  </label>

一些东西:

  1. 您不需要type='file'在 IconButton 上,只需在输入上

  2. IconButton 不希望它的孩子是 SVGIcon 以外的任何东西,所以我建议您使用常规按钮

  3. 在这种情况下我不会调用 stopPropagation

  4. 您的输入类型props中有一个错字。你有type="file type='file'它应该只是type="file"

所以,把所有这些放在一起:

<FlatButton label="Choose file" labelPosition="before">
  <input type="file" style={styles.exampleImageInput} />
</FlatButton>

如果你仍然希望它是一个图标而不是一个按钮,我怀疑你可以做一些事情<input>或者将它作为孩子添加到没有标签的 FlatButton 中。

您可以IconButton使用以下代码实现相同的效果

<IconButton onClick={() => this.fileUpload.click()}>
   <FontIcon className="material-icons" >
       add_a_photo
   </FontIcon>
  </IconButton>
<input type="file" ref={(fileUpload) => {
                    this.fileUpload = fileUpload;
                  }}
  style={{ visibility: 'hidden'}} onChange={this.groupImgUpload} />