React 在模态中使用表单将输入的数据传递给函数

Posted

技术标签:

【中文标题】React 在模态中使用表单将输入的数据传递给函数【英文标题】:React use a form in a modal to pass the inputted data to a function 【发布时间】:2021-12-06 07:08:26 【问题描述】:

我正在使用 react-bootstrap/Modal 和 react-hook-form。我希望用户在输入中插入数据,提交后将转到我想用它制作对象的函数。

<form onSubmit=handleSubmit(update)>
                        <Modal show=show onHide=handleClose>
                            <Modal.Header closeButton>
                                <Modal.Title>Edit</Modal.Title>
                            </Modal.Header>
                            <Modal.Body>
                                <label>Description</label>
                                <input name="message" type="text" ref=register placeholder="description"/>
                            </Modal.Body>
                            <Modal.Footer>
                                <button variant="secondary" onClick=handleClose>
                                    Cancel
                                </button>
                                <button type="submit" variant="primary" onClick=update>
                                    Edit
                                </button>
                            </Modal.Footer>
                        </Modal>
                    </form>



//I will need the async function later to await an api call.
const update = (data) => 
        (async () => 
            console.log("data", data)
        )()
    


感谢您的帮助!

编辑:

我找到了解决方案,我不得不将表单放在模态组件之外。

<Modal show=show onHide=handleClose>
    <form onSubmit=handleSubmit(update)>
        <Modal.Header closeButton>
            <Modal.Title>Edit</Modal.Title>
        </Modal.Header>
        <Modal.Body>
            <label>Description</label>
            <input name="message" type="text" placeholder="description" />
        </Modal.Body>
        <Modal.Footer>
            <button variant="secondary" onClick=handleClose>
                Cancel
            </button>
            <button type="submit" variant="primary" onClick=update>
                Edit
            </button>
        </Modal.Footer>
    </form>
</Modal>

【问题讨论】:

嘿!您是否尝试过使用Modal.Body 中的表格?这样你就可以包装“输入”而不是整个模态 @PedroFilipe 我现在正在尝试,但我想要实现的是让“编辑”按钮在表单提交时设置。如果我将表单放在 Modal.Body 中,我将获得 2 个提交按钮(1x Form,1x Modal.Footer)。 【参考方案1】:

由于您使用的是react-hook-forms,所以表单提交后就可以得到结果。

在您的情况下,结果对象如下所示: message: "一些消息数据"

因此,您需要在update 函数上获取data 参数的“消息”属性。

注意:您将message 作为input 元素的名称属性传递,因此data.message 将为您提供由react-hook-forms 控制的input 元素上的相应数据

const update = (data) => 
        (async () => 
            console.log("data", data.message)
        )()
    

【讨论】:

我认为你误解了这个问题(或者只是我的英语不好),我对 Api 调用没有任何问题。我只是不确定如何将我在表单/模式中输入的数据获取到我的函数中,以便我可以在那里进行控制台记录。 我现在已经更新了我的答案,@JasonMimo

以上是关于React 在模态中使用表单将输入的数据传递给函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将表单 FormSeetController 中的数据传递给 ViewController?

将表单选择的数据传递给 laravel7 中的控制器,返回 null

R:是不是可以使用 paste0 函数(或一些类似的函数)将存储在对象中的数据传递给新对象?

如何使用引导程序将数据传递给模态

如何将数据传递给模态以使用bootstrap4.6动态构造模态

如何将解析器中的数据传递给函数