微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用文件类型输入时,将控制更改为展开

如何解决使用文件类型输入时,将控制更改为展开

我为我的应用定义了多个状态,如下所示:

 const 
 [state,setstate]=React.useState({headerpic:'',Headerfontfamily:'',Subheaderfontfamilty:''})

并且我使用如下输入从设备中获取图像:

 <Button variant='contained' color='primary' className={styler.buttons} name='headerpic' 
 >Header Pic
 <input type='file' value={state.headerpic } style= 
 {{width:'100%',height:'auto',opacity:'0',position:'absolute',top:'0px'}} onChange= 
 {(e)=>fileuploader(e)}></input>
 </Button>

我定义的文件上传器如下:

 const fileuploader=()=>{
 if (e.target.files && e.target.files[0]) {
      let img = e.target.files[0];
      console.log(URL.createObjectURL(img))
       setstate({
        
        headerpic: URL.createObjectURL(img)
        
         });
     
       } }

when i click on button and choose the desired pic i got below error:

一个组件正在将文本类型的受控输入更改为不受控制。输入元素不应从受控状态切换到非受控状态(反之亦然)。确定在组件的使用寿命期间使用受控或不受控制的输入元素。更多信息:

解决这个问题有什么主意吗?

解决方法

将输入分量从受控变为不可控制通常意味着<input>从具有值变为undefined/null。当您的情况下删除img时,很可能会发生这种情况。最简单的解决方法是在状态为undefined的情况下向输入字段添加保证值。

<input type='file' value={state.headerpic || ''} ... />

这可以解决您的问题吗?

,

如果您让我们知道您正在尝试做的是一件好事:/以及一些更完整的代码(上面给出的代码不起作用!)

如果您要制作文件上传器,建议您搜索类似的内容

“如何使用react hooks上传文件”

这是我之前发现的一个;)

https://www.educative.io/edpresso/file-upload-in-react

其中有一个很好的简单示例,它创建一个文件输入并使用react钩子将其保存为状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。