react 拖拽上传
发布时间:2020-12-15 20:21:39 所属栏目:百科 来源:网络整理
导读:????最近项目要求一个拖拽上传图片的功能,项目要求的时间也比较紧,本着不重复造车轮以及没时间去从零开发的原则,在谷歌中搜索的一些文档,果然发现了一个开源的拖拽组件,react-dropzone,这个react拖拽组件,官方文档描述的很详细,可以根据自己的需求进
????最近项目要求一个拖拽上传图片的功能,项目要求的时间也比较紧,本着不重复造车轮以及没时间去从零开发的原则,在谷歌中搜索的一些文档,果然发现了一个开源的拖拽组件,react-dropzone,这个react拖拽组件,官方文档描述的很详细,可以根据自己的需求进行封装。 安装 react-dropzonenpm install --save react-dropzone 引入到项目import Dropzone from ‘react-dropzone‘ 应用不多说直接来个拿来就能用的例子 class Basic extends React.Component { constructor() { super() this.state = { files: [] } } onDrop(files) { this.setState({ files }); } render() { return ( <section> <div className="dropzone"> <Dropzone onDrop={this.onDrop.bind(this)}> <p>Try dropping some files here,or click to select files to upload.</p> </Dropzone> </div> <aside> <h2>Dropped files</h2> <ul> { this.state.files.map(f => <li key={f.name}>{f.name} - {f.size} bytes</li>) } </ul> </aside> </section> ); } } <Basic /> 当把图片组件区域的时候的时候,会触发组建的onDrop方法,方法会将file对象传入! 将文件传到后台????将文件发送到服务器,要注意的就是要将file对象包装到FormData中。 let formFile = new FormData() // 创建一个FormData对象用来储存file对象 formFile.append("file",file) // 将file对象添加到实例化的FormData对象中 agent.post(url,{ // 通过ajax或者其他工具发送给后台 data: formFile } ????要封装成图片上传组件,需要预览功能,还可以用到window.URL.createObjectURL方法,这个方法的功能就是生成一个地址,不需要接受后台回传回来的图片地址,直接就可以通过这个地址来显示图片,减少了请求图片的时间和流量。 let fileurl = window.URL.createObjectURL(file) // 创建本地连接 直接从本地获取图片来展示 用来减少无用的请求 ????了解这几点,就可以进行自己组件的开发了,由于组件代码不是很难,根据自己用到的各种库的不同,所以只挑重要的代码写出来,有遇到问题的欢迎随时留言 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |