Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新时如何将数据放入字段中?_Javascript_Reactjs_Axios_Material Ui - Fatal编程技术网

Javascript 更新时如何将数据放入字段中?

Javascript 更新时如何将数据放入字段中?,javascript,reactjs,axios,material-ui,Javascript,Reactjs,Axios,Material Ui,以下是场景: 我想使用相同的表单创建产品并更新产品。 表单由材质UI(文本字段)的组件组成 我的产品创建表单有效(除非没有放置图像)。 为了更新,我设法将信息返回到我的表单中,但我不知道如何将其数据放入我的字段中(可能有值,但我有错误(null或未定义) 这是我表格的标题(创建和修改): (同一表格,仅标题变更(产品修改) 以下是将要修改的产品信息发送到我的表单页面的链接: <Link to={`/produit/${produit.id}`}> 最后,我如何获取产品信息的代码

以下是场景:

我想使用相同的表单创建产品并更新产品。 表单由材质UI(文本字段)的组件组成

我的产品创建表单有效(除非没有放置图像)。 为了更新,我设法将信息返回到我的表单中,但我不知道如何将其数据放入我的字段中(可能有值,但我有错误(null或未定义)

这是我表格的标题(创建和修改):

(同一表格,仅标题变更(产品修改)

以下是将要修改的产品信息发送到我的表单页面的链接:

<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 });
}