Cra*_*oiD 7 filereader input-type-file reactjs
我正在尝试在我的网络应用中显示从我的电脑中选择的图像.我提到了以下问题,该问题解决了我正在努力解决的问题.
我有这样的html部分
<div className="add_grp_image_div margin_bottom">
<img src={img_upload} className="add_grp_image"/>
<input type="file" className="filetype" id="group_image"/>
<span className="small_font to_middle">Add group image</span>
<img id="target"/>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在中显示所选图像
<img id="target"/>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我也提到了FileReader文档.
Gia*_* Le 27
试试这个
<input type="file" onChange={this.onImageChange} className="filetype" id="group_image"/>
Run Code Online (Sandbox Code Playgroud)
向类添加方法
onImageChange = (event) => {
if (event.target.files && event.target.files[0]) {
let reader = new FileReader();
reader.onload = (e) => {
this.setState({image: e.target.result});
};
reader.readAsDataURL(event.target.files[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用 URL.createObjectURL
onImageChange = (event) => {
if (event.target.files && event.target.files[0]) {
this.setState({
image: URL.createObjectURL(event.target.files[0])
});
}
}
Run Code Online (Sandbox Code Playgroud)
并显示图像
<img id="target" src={this.state.image}/>
Run Code Online (Sandbox Code Playgroud)
最近我遇到需要类似的功能。这是我使用的实现hooks。
export default function App() {
const [image, setImage] = React.useState("");
const imageRef = React.useRef(null);
function useDisplayImage() {
const [result, setResult] = React.useState("");
function uploader(e) {
const imageFile = e.target.files[0];
const reader = new FileReader();
reader.addEventListener("load", (e) => {
setResult(e.target.result);
});
reader.readAsDataURL(imageFile);
}
return { result, uploader };
}
const { result, uploader } = useDisplayImage();
return (
<div className="App">
<input
type="file"
onChange={(e) => {
setImage(e.target.files[0]);
uploader(e);
}}
/>
{result && <img ref={imageRef} src={result} alt="" />}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个自定义hook,以便可以在应用程序中的任何位置重复使用。返回hook图像src和uploader function. 然后可以将图像src链接到<img src={..} />,然后在input更改时您可以将 传递e到uploader function。
| 归档时间: |
|
| 查看次数: |
10560 次 |
| 最近记录: |