【发布时间】:2022-08-18 02:18:46
【问题描述】:
美好的一天,我似乎无法弄清楚这一点。我得到\“InvalidStateError:试图使用一个不可用或不再可用的对象”让我解释一下:
我有一个 CustomUpload 组件:
export const CustomUpload = ({ name, children, accept, onChange, value }) => {
const fileUpload = useRef(null);
const handleClick = (e) => {
e.preventDefault();
fileUpload.current.click();
};
return (
<div className=\"custom-upload-container\">
<label
style={{ textAlign: \"center\", fontFamily: \"var(--montserrat-text)\" }}
htmlFor={name}
>
{children}
</label>
<div className=\"custom-upload-input-container\">
<p>{value.name}</p>
<div className=\"input-container\">
<input
ref={fileUpload}
className=\"custom-upload\"
type=\"file\"
name={name}
accept={accept}
onChange={onChange}
value={value}
/>
</div>
<CustomButton onClick={handleClick}>Browse</CustomButton>
</div>
</div>
);
};
然后我有一个页面,用户必须提交 5 张图片,但为简单起见,我将使用两张:
export const Images = () => {
const [data, setData] = useState({
image1: \"\",
image2: \"\",
});
const { image1, image2 } = data;
const handleOnChange = (value, fieldName) => {
setData({...data, [fieldName]: value });
return(
<form>
<CustomUpload
name=\"image1\"
onChange={(e) => handleOnChange(e.target.files[0], \"image1\")}
value={image1}
accept=\"image/*\"
>
First Image
</CustomUpload>
<CustomUpload
name=\"image2\"
onChange={(e) => handleOnChange(e.target.files[0], \"image2\")}
value={image2}
accept=\"image/*\"
>
Second Image
</CustomUpload>
</form>
}
问题是,当我选择图像时,它给了我错误,我似乎无法弄清楚我应该如何解决它。谢谢你。
标签: reactjs onchange use-state