Reactjs 使用React钩子在React js中预览上载的图像
使用React hooks,通过选择文件输入上传图像后,如何在previewProfilePic>img区域预览图像Reactjs 使用React钩子在React js中预览上载的图像,reactjs,react-hooks,Reactjs,React Hooks,使用React hooks,通过选择文件输入上传图像后,如何在previewProfilePic>img区域预览图像 import React, { useState } from "react"; const Register = () => { const [picture, setPicture] = useState(null); const onChangePicture = e => { console.log('picture: ', pictu
import React, { useState } from "react";
const Register = () => {
const [picture, setPicture] = useState(null);
const onChangePicture = e => {
console.log('picture: ', picture);
setPicture(e.target.files[0]);
};
return (
<div className="register_wrapper">
<div className="register_player_column_layout_one">
<div className="register_player_Twocolumn_layout_two">
<form className="myForm">
<div className="formInstructionsDiv formElement">
<h2 className="formTitle" >Sign Up</h2>
<p className="instructionsText"></p>
<div className="register_profile_image">
<input id="profilePic" type="file" onChange={onChangePicture}/>
</div>
<div className="previewProfilePic" >
<img className="playerProfilePic_home_tile" src=""></img>
</div>
</div>
<div className="fillContentDiv formElement">
<div className="names formContentElement">
<input className="inputRequest " type="text" placeholder="First Name" />
<input className="inputRequest " type="text" placeholder="Last Name" />
</div>
</div>
<div className="submitButtonDiv formElement">
<button className="submitButton">Register</button>
</div>
</form>
</div>
</div>
</div>
);
}
export default Register;
我还没有对此进行测试,但是,您需要做的是通过执行以下操作将文件转换为URL=>URL.createObjectURLevent.target.files[0]
我还没有对此进行测试,但是,您需要做的是通过执行以下操作将文件转换为URL=>URL.createObjectURLevent.target.files[0]
为了查看预览,您需要读取图像并使用base64格式数据设置状态,这些数据是您接收的,并作为图像标记的源进行渲染 要读取文件数据,可以使用FileReader
为了查看预览,您需要读取图像并使用base64格式数据设置状态,这些数据是您接收的,并作为图像标记的源进行渲染 要读取文件数据,可以使用FileReader createObjectURL静态方法创建一个DOMString,其中包含表示参数中给定对象的URL。URL生存期绑定到创建URL的窗口中的文档。新对象URL表示指定的文件对象或Blob对象 createObjectURL静态方法创建一个DOMString,其中包含表示参数中给定对象的URL。URL生存期绑定到创建URL的窗口中的文档。新对象URL表示指定的文件对象或Blob对象 这很简单。 要编写的代码要少得多: 一个非常简单的例子是: 从React导入React; 从@rpldy/Uploady导入上传; 从@rpldy/上传按钮导入上传按钮; 从@rpldy/上传预览导入上传预览; 导出常量应用==> ; 这很简单。 要编写的代码要少得多: 一个非常简单的例子是: 从React导入React; 从@rpldy/Uploady导入上传; 从@rpldy/上传按钮导入上传按钮; 从@rpldy/上传预览导入上传预览; 导出常量应用==>
;谢谢你,现在它上传的文件,但我可以看到一个错误,首先你上传的图像,图像显示成功-这是好的。现在,您再次单击“选择文件”,但决定不选择新图像并单击“取消”。。异常引发类型错误:未能在“URL”上执行“createObjectURL”:未找到与提供的签名匹配的函数。onChangePicture C:/Project1/src/components/Register.js:10 7 | const onChangePicture=e=>{8 | console.log'picture:',picture;>10 | setPictureURL.createObjectURLe.target.files[0];我试图解决您的主要问题,如何预览图像。错误消息清楚地表明您应该向代码中添加什么。谢谢,现在它正在上载文件,但我看到一个错误,首先您上载图像,图像显示成功-这很好。现在您再次单击“选择文件”,但决定不选择新图像,然后单击“可以”cel..异常引发TypeError:未能对“URL”执行“createObjectURL”:未找到与提供的签名匹配的函数。onChangePicture C:/Project1/src/components/Register.js:10 7 | const onChangePicture=e=>{8 | console.log'picture:',picture;>10 | setPictureURL.createObjectURLe.target.files[0];我试图解决你的主要问题,如何预览图像。错误消息清楚地表明你应该向代码中添加什么。谢谢你,伙计,但我遇到了一个错误。第一次上传看起来不错,尝试第二次上传,但不选择文件,即单击“取消”时出现异常。@soccerway我更新了答案。你需要检查t存在e.target.files[0]谢谢,伙计,但我遇到了一个错误。.第一次上载看起来不错,请尝试第二次上载,不要选择文件,即单击“取消”,出现异常。@soccerway我更新了答案。您需要检查是否存在e.target.files[0]
import React, { useState } from "react";
const Register = () => {
const [picture, setPicture] = useState('');
const onChangePicture = e => {
console.log('picture: ', picture);
setPicture(URL.createObjectURL(e.target.files[0]));
};
return (
<div className="register_wrapper">
<div className="register_player_column_layout_one">
<div className="register_player_Twocolumn_layout_two">
<form className="myForm">
<div className="formInstructionsDiv formElement">
<h2 className="formTitle" >Sign Up</h2>
<p className="instructionsText"></p>
<div className="register_profile_image">
<input id="profilePic" type="file" onChange={onChangePicture}/>
</div>
<div className="previewProfilePic" >
<img className="playerProfilePic_home_tile" src={picture}></img>
</div>
</div>
<div className="fillContentDiv formElement">
<div className="names formContentElement">
<input className="inputRequest " type="text" placeholder="First Name" />
<input className="inputRequest " type="text" placeholder="Last Name" />
</div>
</div>
<div className="submitButtonDiv formElement">
<button className="submitButton">Register</button>
</div>
</form>
</div>
</div>
</div>
);
}
export default Register;
export default () => {
const [picture, setPicture] = useState(null);
const [imgData, setImgData] = useState(null);
const onChangePicture = e => {
if (e.target.files[0]) {
console.log("picture: ", e.target.files);
setPicture(e.target.files[0]);
const reader = new FileReader();
reader.addEventListener("load", () => {
setImgData(reader.result);
});
reader.readAsDataURL(e.target.files[0]);
}
};
return (
<div className="register_wrapper">
<div className="register_player_column_layout_one">
<div className="register_player_Twocolumn_layout_two">
<form className="myForm">
<div className="formInstructionsDiv formElement">
<h2 className="formTitle">Sign Up</h2>
<p className="instructionsText" />
<div className="register_profile_image">
<input id="profilePic" type="file" onChange={onChangePicture} />
</div>
<div className="previewProfilePic">
<img className="playerProfilePic_home_tile" src={imgData} />
</div>
</div>
<div className="fillContentDiv formElement">
<div className="names formContentElement">
<input
className="inputRequest "
type="text"
placeholder="First Name"
/>
<input
className="inputRequest "
type="text"
placeholder="Last Name"
/>
</div>
</div>
<div className="submitButtonDiv formElement">
<button className="submitButton">Register</button>
</div>
</form>
</div>
</div>
</div>
);
};
import React, { useState } from "react";
const Register = () => {
const [picture, setPicture] = useState(null);
const onChangePicture = e => {
setPicture(URL.createObjectURL(e.target.files[0]) );
};
return (
<div className="register_wrapper">
<div className="register_player_column_layout_one">
<div className="register_player_Twocolumn_layout_two">
<form className="myForm">
<div className="formInstructionsDiv formElement">
<h2 className="formTitle" >Sign Up</h2>
<p className="instructionsText"></p>
<div className="register_profile_image">
<input id="profilePic" type="file" onChange={onChangePicture}/>
</div>
<div className="previewProfilePic" >
<img className="playerProfilePic_home_tile" src={picture && picture}></img>
</div>
</div>
<div className="fillContentDiv formElement">
<div className="names formContentElement">
<input className="inputRequest " type="text" placeholder="First Name" />
<input className="inputRequest " type="text" placeholder="Last Name" />
</div>
</div>
<div className="submitButtonDiv formElement">
<button className="submitButton">Register</button>
</div>
</form>
</div>
</div>
</div>
);
}
export default Register;