Javascript 更新时如何将数据放入字段中?
以下是场景: 我想使用相同的表单创建产品并更新产品。 表单由材质UI(文本字段)的组件组成 我的产品创建表单有效(除非没有放置图像)。 为了更新,我设法将信息返回到我的表单中,但我不知道如何将其数据放入我的字段中(可能有值,但我有错误(null或未定义) 这是我表格的标题(创建和修改): (同一表格,仅标题变更(产品修改) 以下是将要修改的产品信息发送到我的表单页面的链接:Javascript 更新时如何将数据放入字段中?,javascript,reactjs,axios,material-ui,Javascript,Reactjs,Axios,Material Ui,以下是场景: 我想使用相同的表单创建产品并更新产品。 表单由材质UI(文本字段)的组件组成 我的产品创建表单有效(除非没有放置图像)。 为了更新,我设法将信息返回到我的表单中,但我不知道如何将其数据放入我的字段中(可能有值,但我有错误(null或未定义) 这是我表格的标题(创建和修改): (同一表格,仅标题变更(产品修改) 以下是将要修改的产品信息发送到我的表单页面的链接: <Link to={`/produit/${produit.id}`}> 最后,我如何获取产品信息的代码
<Link to={`/produit/${produit.id}`}>
最后,我如何获取产品信息的代码:
useEffect(() => {
getMarque()
if (id) {
getProduitById(id).then(response => {
if (response.data){
console.log(response.data.marqueId)
setProduit({
nom: response.data.nom,
prix: response.data.prix,
description: response.data.description,
qtestock: response.data.qtestock,
})
}
}).catch(err => console.log(err));
}
}, [])
useEffect(() => {
if (id) {
getProduitById(id).then(response => {
if (response.data){
console.log(response.data)
setProduit({
nom: response.data.nom,
prix: response.data.prix,
description: response.data.description,
imageurl: response.data.imageurl,
qtestock: response.data.qtestock,
marqueId: response.data.marqueId,
})
console.log(produit)
}
}).catch(err => console.log(err));
}
}, [])
就是这样。我试图确保,当我在修改链接后到达表单时,字段中填充了以前的产品信息
(还有一个小屏幕,显示我在控制台中获取产品信息:)
我能够用“value”和函数“onChange”解决我的问题 对于任何人,以下是代码: 表格:
<TextField style={TextFieldStyle} value={produit.nom} id='nom' name='nom' onChange={handleChange} placeholder='Entrez le nom du produit' type='string' fullWidth required variant='outlined' />
一旦改变:
const [produit, setProduit] = useState([]);
const handleChange = (e) => {
const value = e.target.value;
setProduit({
...produit,
[e.target.name]: value });
}
在请求后,使用
value
属性在文本字段中设置produit
值应该适用于您的情况。您还可以添加您收到的错误吗?我不知道为什么,但经过一些检查和重新加载后,我不再有错误……但是值可以工作,但无法更改字段的文本而defaultValue似乎不适用于暗示value属性使TextField受控制。因此,还需要onChange处理程序函数来更改TextField的内容。很抱歉回复太晚,但这是我在网上看到的。如果我使用值,则需要onChange才能更改TextField内的文本。
const [produit, setProduit] = useState([]);
const handleChange = (e) => {
const value = e.target.value;
setProduit({
...produit,
[e.target.name]: value });
}