首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在formik组件外部处理formik窗体

在formik组件外部处理formik窗体
EN

Stack Overflow用户
提问于 2019-12-26 21:58:12
回答 1查看 3K关注 0票数 3

我有一个formik表单,如下所示。我可以在formik组件中提交表单。但是我如何在formik组件(本例中是页脚按钮)之外提交它呢?

表单url:Click here

具体地说,我如何在Formik组件之外访问此值handleChange, values, handleSubmit, errors,isValid,touched, handleBlur, isSubmitting,

我是用react-native做的,但我猜react的概念会有帮助,特别是在使用useRef等方面。在网上找到几个使用ref的例子,但都不起作用。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-26 22:08:46

我在创建一个可重用的弹出窗口时遇到了同样的问题,并在弹出窗口模板中使用了保存按钮,在弹出窗口内容中使用了formik表单(因此我无法将按钮放入表单中,因为页脚在任何弹出窗口中都被重用了)。

我解决这个问题的方法是在表单中的submit按钮中添加一个引用,并使用css隐藏该按钮,然后在单击所需的submit按钮时实用地触发隐藏的submit按钮。

也许不是最干净的解决方案,但它对我很有效。

这是一个基本的示例

代码语言:javascript
复制
<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>

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59489468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档