大家好!我不能将两个状态合并为一个状态。我为输入值创建了一种状态,为图像上传器创建了一种状态
Hello everyone! I cannot combine two states in one state . I have created one state for input values and one state for image uploader
问题是我不知道如何从另一个状态将文件数据插入selectedFile。是否可能只使用一种状态?没有像我的情况那样创建另一个状态?感谢您的回答!提前谢谢您。
title: "",
selectedFile: [],
article: "",
color: "",
size: "",
price: "",
description: "",
makeup: "",
manufactured: "",
category: "",
});
const [files, setFiles] = useState([]);
// Form inputs
<form autoComplete="off"
noValidate
className={classes.form}
onSubmit={handleSubmit}
>
<input
name="selectedFile"
type="file"
multiple={true}
onChange={(e) => {
setPostProduct(e.target.files);
}}
/>
<input
name="title"
value={postProduct.title}
type="text"
placeholder="Название товара"
onChange={(e) =>
setPostProduct({
...postProduct,
title: e.target.value,
})
}
/>
<input
name="price"
value={postProduct.price}
type="text"
placeholder="Цена"
onChange={(e) =>
setPostProduct({
...postProduct,
price: e.target.value,
})
}
/>
只需更改:
onChange={(e) => { setPostProduct(e.target.files); }}
从文件输入,到:
onChange={(e) => {
setPostProduct({
...postProduct,
selectedFile: e.target.files
});
}}
所以代码应该是这样的:
import { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
const [postProduct, setPostProduct] = useState({
title: "",
selectedFile: [],
article: "",
color: "",
size: "",
price: "",
description: "",
makeup: "",
manufactured: "",
category: ""
});
useEffect(() => {
console.log(postProduct.selectedFile);
}, [postProduct]);
return (
// Form inputs
<form
autoComplete="off"
noValidate
// className={classes.form}
// onSubmit={handleSubmit}
>
<input
name="selectedFile"
type="file"
multiple={true}
onChange={(e) => {
setPostProduct({
...postProduct,
selectedFile: e.target.files
});
}}
/>
<input
name="title"
value={postProduct.title}
type="text"
placeholder="Название товара"
onChange={(e) =>
setPostProduct({
...postProduct,
title: e.target.value
})
}
/>
<input
name="price"
value={postProduct.price}
type="text"
placeholder="Цена"
onChange={(e) =>
setPostProduct({
...postProduct,
price: e.target.value
})
}
/>
</form>
);
}
问题是我不知道如何从另一个状态将文件数据插入selectedFile。是否可能只使用一种状态?没有像我的情况那样创建另一个状态?感谢您的回答!提前谢谢您。
title: "",
selectedFile: [],
article: "",
color: "",
size: "",
price: "",
description: "",
makeup: "",
manufactured: "",
category: "",
});
const [files, setFiles] = useState([]);
// Form inputs
<form autoComplete="off"
noValidate
className={classes.form}
onSubmit={handleSubmit}
>
<input
name="selectedFile"
type="file"
multiple={true}
onChange={(e) => {
setPostProduct(e.target.files);
}}
/>
<input
name="title"
value={postProduct.title}
type="text"
placeholder="Название товара"
onChange={(e) =>
setPostProduct({
...postProduct,
title: e.target.value,
})
}
/>
<input
name="price"
value={postProduct.price}
type="text"
placeholder="Цена"
onChange={(e) =>
setPostProduct({
...postProduct,
price: e.target.value,
})
}
/>
只需更改:
onChange={(e) => { setPostProduct(e.target.files); }}
从文件输入,到:
onChange={(e) => {
setPostProduct({
...postProduct,
selectedFile: e.target.files
});
}}
所以代码应该是这样的:
import { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
const [postProduct, setPostProduct] = useState({
title: "",
selectedFile: [],
article: "",
color: "",
size: "",
price: "",
description: "",
makeup: "",
manufactured: "",
category: ""
});
useEffect(() => {
console.log(postProduct.selectedFile);
}, [postProduct]);
return (
// Form inputs
<form
autoComplete="off"
noValidate
// className={classes.form}
// onSubmit={handleSubmit}
>
<input
name="selectedFile"
type="file"
multiple={true}
onChange={(e) => {
setPostProduct({
...postProduct,
selectedFile: e.target.files
});
}}
/>
<input
name="title"
value={postProduct.title}
type="text"
placeholder="Название товара"
onChange={(e) =>
setPostProduct({
...postProduct,
title: e.target.value
})
}
/>
<input
name="price"
value={postProduct.price}
type="text"
placeholder="Цена"
onChange={(e) =>
setPostProduct({
...postProduct,
price: e.target.value
})
}
/>
</form>
);
}