我有一个formik表单,如下所示。我可以在formik组件中提交表单。但是我如何在formik组件(本例中是页脚按钮)之外提交它呢?
表单url:Click here
具体地说,我如何在Formik组件之外访问此值handleChange, values, handleSubmit, errors,isValid,touched, handleBlur, isSubmitting,。
我是用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>发布于 2019-12-26 22:08:46
我在创建一个可重用的弹出窗口时遇到了同样的问题,并在弹出窗口模板中使用了保存按钮,在弹出窗口内容中使用了formik表单(因此我无法将按钮放入表单中,因为页脚在任何弹出窗口中都被重用了)。
我解决这个问题的方法是在表单中的submit按钮中添加一个引用,并使用css隐藏该按钮,然后在单击所需的submit按钮时实用地触发隐藏的submit按钮。
也许不是最干净的解决方案,但它对我很有效。
这是一个基本的示例
<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>希望这能有所帮助
https://stackoverflow.com/questions/59489468
复制相似问题