You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何将表单输入框的值传递给onSubmit处理函数?

解决方法

你可以通过以下几种方式把input的值传递给afterSubmission处理函数:

方式一:通过事件对象直接获取表单内的input值

修改处理函数,去掉多余的message参数,直接从触发事件的表单元素中提取input的值:

const afterSubmission = (e) => {
    e.preventDefault()
    // 从表单中获取input元素的值
    const message = e.target.querySelector('#message-input').value;
    console.log(message);
    if (message === "") return
    displayMessage(message)
    
    // 清空input内容
    e.target.querySelector('#message-input').value = ""
}

表单的onSubmit绑定保持不变,因为submit事件会自动把事件对象e传入处理函数,通过e.target可以访问到表单本身,进而获取内部的input元素。

方式二:提前获取input元素的引用

在外部先获取input元素的DOM引用,之后直接在处理函数中使用这个引用的value属性:

// 提前获取input元素
const messageInput = document.getElementById('message-input');

const afterSubmission = (e) => {
    e.preventDefault()
    const message = messageInput.value;
    console.log(message);
    if (message === "") return
    displayMessage(message)
    
    messageInput.value = ""
}

这种方式更简洁,适合需要多次复用该input元素的场景。

方式三:React环境下使用useRef钩子(如果是React项目)

如果你的代码是在React组件中,推荐使用useRef钩子来获取input的DOM引用:

import { useRef } from 'react';

function MessageForm() {
    const messageInputRef = useRef(null);

    const afterSubmission = (e) => {
        e.preventDefault()
        const message = messageInputRef.current.value;
        console.log(message);
        if (message === "") return
        displayMessage(message)
        
        messageInputRef.current.value = ""
    }

    return (
        <>
            <div id="message-container"></div>
            <form onSubmit={afterSubmission}>
                <label htmlFor="message-input">Message</label>
                <input type="text" id="message-input" ref={messageInputRef} />
                <button type="submit" id="send-button">Send</button>
            </form>
        </>
    );
}

通过ref属性把input元素和messageInputRef绑定,之后就能通过messageInputRef.current访问到input元素的所有属性。

内容的提问来源于stack exchange,提问作者Venoz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:31:12