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

提交表单时onsubmit绑定的addUserHandler函数未执行问题

解决Form表单onsubmit事件不触发的问题

你的代码里有两个关键问题导致addUserHandler无法执行:

1. 未声明的nameInputRef变量

代码中使用了ref={nameInputRef}但没有创建这个ref,React会抛出运行时错误,组件渲染失败后自然无法触发表单提交事件。需要先通过useRef钩子创建这个ref:

import React, { useRef } from 'react'; // 引入useRef
// ...
const Form = function (props) {
  const nameInputRef = useRef(); // 在组件内定义ref
  // ...
};

2. 自定义Button组件未正确转发属性

如果你的Button组件没有将type="submit"传递给底层的原生<button>元素,点击按钮时不会触发表单的onsubmit事件。确保Button组件的实现正确转发所有props:

// Button.jsx
import React from 'react';

const Button = (props) => {
  return <button type={props.type} {...props}>{props.children}</button>;
};

export default Button;

这样type="submit"会被正确应用到底层按钮,点击时就能触发表单的提交逻辑。

修复后的完整代码

import React, { useRef } from 'react';
import styles from './Form.module.css';
import Button from './Button';

const Form = function (props) {
  const nameInputRef = useRef();

  const addUserHandler = function (e) {
    e.preventDefault();
    console.log(135);
    // 可选:通过ref获取输入框的值
    console.log(nameInputRef.current.value);
  };

  return (
    <form onSubmit={addUserHandler}>
      <input
        type='text'
        className={styles.input}
        placeholder='Your Age'
        ref={nameInputRef}
      />

      <Button type='submit'>add user</Button>
    </form>
  );
};

export default Form;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:15:34