【发布时间】:2020-07-07 14:32:51
【问题描述】:
我正在处理 Apollo graphql 以从 UI 获取数据,这里我从后端获取数据并上传图像,然后有一个按钮(编辑),单击该按钮我使字段可编辑,以便用户可以上传新图片。
问题
在编辑点击我有两个按钮编辑和取消
问题是当我点击取消时,它没有拍摄初始图像。
我正在做的是
const [file, setfile] = useState('');
const [filename, setfilename] = useState('Chose file');
const [canCeldata, setcanCeldata] = useState(null);
const [disabled, setdisabled] = useState(true);
const [edit, setedit] = useState(false);
const [formData, setFormdata] = useState(false);
const { loading, error, data } = useQuery(Get_img);
useEffect(() => {
if (data) {
setFormdata(data.getImage);
setcanCeldata(data.getImage);
}
}, [data]);
if (loading) return <div>Loadinf</div>;
if (error) return <div>Error</div>;
const onChange = (e) => {
// setfile(e.target.files[0]);
// setfilename(e.target.files[0].name);
let file = e.target.files;
let reader = new FileReader();
reader.readAsDataURL(file[0]);
reader.onload = (e) => {
// console.log(e.target.result);
formData.img_url = URL.createObjectURL(file[0]);
setfile(e.target.result);
};
};
const Edit = () => {
setdisabled(false);
setedit(true);
};
const cancel = () => {
console.log(data);
setFormdata(canCeldata);
setdisabled(true);
setedit(false);
};
<form>
{edit === false && (
<button className="btn btn-primary" type="button" onClick={Edit}>
Edit
</button>
)}
{edit === true && (
<div>
<button className="btn btn-primary" type="button">
Save
</button>
<button className="btn btn-primary" type="button" onClick={cancel}>
Cancel
</button>
</div>
)}
<br />
<div className="custom-file">
<input
disabled={disabled}
type="file"
accept="image/png, image/jpeg"
className="custom-file-input"
id="customFile"
onChange={onChange}
/>
<label className="custom-file-label" htmlFor="customFile">
{filename}
</label>
<br />
<br />
<button
disabled={disabled}
type="button"
className="btn btn-secondary btn-block"
onClick={save_img}>
Submit
</button>
</div>
</form>
<img src={formData.img_url} className="test_img" />
</div>
在取消点击时显示问题,因为 url 正在更改,我正在使用 URL.createObjectURL
这个正在改变网址
为了便于理解,我提供了我的静态数据。
let data = {
"id": "1",
"img_url":
"https://storage.blob.core.windows.net/testimageupload/test.png"
}
工作代码
【问题讨论】:
-
能否将工作代码sn-p贴在codesandbox上
-
@RaghvenderKataria 我已经添加了代码沙箱链接
标签: javascript reactjs react-hooks