我有一个formik
表格,如下所示。我可以在formik组件内提交表单。但是我怎么能在formik组件之外(在此示例中,在页脚内部)提交它呢。
Formik网址:Click here
特别是,我如何在handleChange, values, handleSubmit, errors,isValid,touched, handleBlur, isSubmitting,
组件之外访问此值Formik
。
我正在react-native
中进行此操作,但是我猜想react的概念会有所帮助,特别是在使用useRef
等时。在线使用ref的示例很少,但都无效。
<View>
<Formik
onSubmit={async values => {
this.handleSubmit(values);
await new Promise(resolve => setTimeout(resolve, 1000));
console.warn(values);
}}
validationSchema={validationSchema}>
{({
handleChange,
values,
handleSubmit,
errors,
isValid,
touched,
handleBlur,
isSubmitting,
}) => (
<View>
<Form>
<Text>First Name</Text>
<TextInput
name="first_name"
value={values.first_name}
onChangeText={handleChange('first_name')}
/>
{errors.first_name ? (
<Text>{errors.first_name}</Text>/>
) : (
<></>
)}
<Button onPress={handleSubmit}>
<Text>Submit</Text>
</Button>
</Form>
</View>
)}
</Formik>
<Footer>
<Button>Submit</Button>
</Footer>
</View>
答案 0 :(得分:1)
在创建可重用的弹出窗口并在弹出模板中具有保存按钮以及在弹出内容中包含formik表单时,我遇到了相同的问题(因此,由于页脚已在任何弹出窗口中重复使用,因此我无法将按钮放在表单内)。
我通过在表单中的提交按钮上添加一个ref并用css隐藏该按钮,然后在单击所需的提交按钮时实用地触发了对隐藏的提交按钮的点击来解决此问题。
也许不是最干净的解决方案,但它对我有用。
这是一个基本样本
<Formik>
....
<Field>
<Field>
...
<button type="submit" style={{display:"none"}} ref={this.submitButton}/>
</Formik>
<div className="ftr">
<button onClick={() => this.submitButton.current.click()}>Save</button>
</div>
希望这会有所帮助