ReactJS Formik 隐藏字段向服务器发送空值

Abd*_*dir 12 reactjs formik

我是 React 的新手,我正在使用 FormIK,它可以很好地发布表单数据,除非我向其中添加隐藏字段。

<Field type="hidden" className="form-control" name="hiddenField" /> 
Run Code Online (Sandbox Code Playgroud)

当我发布表单时,它会发送隐藏字段的空值我也向 Formik 提供了初始值

<Formik initialValues={{
first_name:'',last_name:'',username:'',email:'',password:'',
password_confirmation:'',distributor:'',phone_number:'',address:'',country:'',
state:'',city:'',zip_code:'',hiddenField:''
}} >
Run Code Online (Sandbox Code Playgroud)

有什么遗漏吗?

小智 13

我刚刚也遇到了这个问题。我的解决方法是只添加一个初始值,甚至不使用隐藏字段。结果是,在 中onSubmit()values对象包含我的隐藏字段键和initialValues值。

我想知道是否有人知道解决此问题的正确方法?我的方式似乎有点hacky?

  • 你的方法完全没问题。我实际上会将您的答案标记为正确的答案。 (3认同)

Abd*_*dir 6

这是我在 Formik 中管理隐藏字段值的方法

setFieldValue在标签之前传递as 参数

{({ values, errors, touched, handleSubmit, setFieldValue , isSubmitting }) => (
<Form>
<div className="form-group has-feedback">
<input type="hidden" value="testing" name="hiddenField" />
Run Code Online (Sandbox Code Playgroud)

然后我设法改变了它的 onClick 方法(可以根据需要使用)

<button type="submit" className="btn btn-primary btn-block btn-flat" 
onClick={() => {setFieldValue("hiddenField", "yourValueHere OR dynamicVariable"); }} 
disabled={isSubmitting}>Register</button>
Run Code Online (Sandbox Code Playgroud)