编辑表单 React JS

Posted

技术标签:

【中文标题】编辑表单 React JS【英文标题】:Edit Form React JS 【发布时间】:2020-08-25 05:01:17 【问题描述】:

我正在使用 React js 制作一个编辑表单。我在表单中有多个组件。在其中一个子组件中,我将所做的所有更改传递给主组件中的挂钩,以在 firebase 中进行更改。

父组件

const [changes, setChanges] = useState();
const updateGenData = (genData) => 
    setChanges(genData);  
  

儿子组件(我通过道具从父亲那里获取所有信息)

const UpdateProfileGenData = (props) => 

 const [values, setValues] = useState();
 const [changes, setChanges] = useState();

 useEffect(() => 
    setValues(props);
 ,[props]); 

 const field1, field2, field3 = values;

 useEffect(() => 
    props.updateGenData(changes);
,[changes]); 

  const handleChange= e => 
        setValues(
            ...values,
            [e.target.name]: e.target.value
        );
         setChanges(
          ...changes,
          [e.target.name]: e.target.value
      ) 
    
return (

<input type="text" name="field1" value=field1 onChange=handleChange/>
<input type="text" name="field2" value=field2 onChange=handleChange/>
<input type="text" name="field3" value=field3 onChange=handleChange/>

);

export default UpdateProfileGenData;

当我将值从子组件传递给父组件时,它不允许我编辑子表单。我无法更改任何字段。

有什么建议吗??

问候

【问题讨论】:

如何将 props 传递给 UpdateProfileGenData 组件?你能为此提供一个代码框或类似的东西吗? 【参考方案1】:

你为什么经常使用useEffect?问题可能是您经常使用useEffect 并且在某个地方正确覆盖了数据。 可以变得更容易:

父组件

const [changes, setChanges] = useState();
const updateGenData = (genData) => setChanges(...changes, ...genData);  

子组件

const UpdateProfileGenData = (field1, field2, field3, updateGenData) => 

  const handleChange= e => updateGenData(
            [e.target.name]: e.target.value,
        );

return (

<input type="text" name="field1" value=field1 onChange=handleChange/>
<input type="text" name="field2" value=field2 onChange=handleChange/>
<input type="text" name="field3" value=field3 onChange=handleChange/>

);

export default UpdateProfileGenData;

【讨论】:

以上是关于编辑表单 React JS的主要内容,如果未能解决你的问题,请参考以下文章

React中reduxForm表单编辑

无法通过 React 和 Redux 将相同的表单组件用于添加或编辑模式

我的提交和编辑表单的 React 模态组件不会关闭?

React 的 Upload 文件表单编辑回显及 onChange 自定义回调的方式

React 的 Upload 文件表单编辑回显及 onChange 自定义回调的方式

React工作记录三十react中form表单编辑的时候回显无法回显