У меня есть функциональный компонент со следующим хуком: -
const [imagePreview, setImagePreview] = useState('');
Позже, событие изменения, у меня есть это: -
if (imagePreviewUrl) {
setImagePreview( (<div>
<br/> <img src={imagePreviewUrl} alt="icon" width="200" />
</div>));
}
Похоже, это не так установить что-нибудь. как мне это установить? Я мог бы сделать это так: -
let imagePreview = null;
if (imagePreviewUrl) {
imagePreview = (<div>
<br/> <img src={imagePreviewUrl} alt="icon" width="200" />
</div>);
}
Но это немного уродливо. Я думаю, что useState - рекомендуемый способ сделать это.
Обновление с дополнительным кодом: -
const fileChangedHandler = event => {
setSelectedFile(event.target.files[0]);
let reader = new FileReader();
reader.onloadend = () => {
setImagePreviewUrl(reader.result);
}
reader.readAsDataURL(event.target.files[0])
if (imagePreviewUrl) {
// can't break into multiline, sytax error
setImagePreview('(<div><br/> <img src={imagePreviewUrl} alt="icon" width="200" /> </div>)');
}
return (
<div>
<label>Profile picture: </label>
<input className="Column" type="file" accept="image/*"
onChange={(e) => {fileChangedHandler(e)}} />
// I want to show the selected image here as preview before upload
{ imagePreview }
</div>
)
Надеюсь, я дам ясное понимание. Каково мое намерение?