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

基础Kendo React Form点击提交无响应,alert未触发的原因是什么?

Kendo React Form点击Submit无反应问题排查

问题描述

创建了一个基础Kendo React Form,点击「Submit」按钮时没有任何反应,alert函数未被调用。相关代码如下:

import * as React from "react";
import * as ReactDOM from "react-dom";
import { Field, Form, FormElement } from "@progress/kendo-react-form";

const handleSubmit1 = (dataItem) => {
  alert(1);
};

const AppComponent = () => {
  return (
    <Form
      onSubmit={handleSubmit1}
   
      render={(formRenderProps) => (
        <FormElement>
          <button type="submit" disabled={false}>
            Submit
          </button>
        </FormElement>
      )}
    />
  );
};

ReactDOM.render(<AppComponent />, document.querySelector("my-app"));

原因分析

问题核心是未关联Kendo Form内部的提交逻辑:

  • Kendo React Form的render回调会返回包含表单核心交互逻辑的formRenderProps对象,其中的onSubmit或submit方法是触发表单提交的关键入口。
  • 直接使用原生type="submit"按钮但未绑定Form提供的提交方法,Form组件无法识别提交动作,也就不会调用你定义的handleSubmit1回调。

修复方案

方案1:给FormElement绑定onSubmit事件

将formRenderProps.onSubmit绑定到FormElement的onSubmit属性上,让表单的提交动作关联到Kendo Form的逻辑:

import * as React from "react";
import * as ReactDOM from "react-dom";
import { Field, Form, FormElement } from "@progress/kendo-react-form";

const handleSubmit1 = (dataItem) => {
  alert(1);
};

const AppComponent = () => {
  return (
    <Form
      onSubmit={handleSubmit1}
      render={(formRenderProps) => (
        <FormElement onSubmit={formRenderProps.onSubmit}>
          <button type="submit" disabled={false}>
            Submit
          </button>
        </FormElement>
      )}
    />
  );
};

ReactDOM.render(<AppComponent />, document.querySelector("my-app"));

方案2:按钮点击调用submit方法

直接在按钮的onClick事件中调用formRenderProps.submit方法,手动触发表单提交:

import * as React from "react";
import * as ReactDOM from "react-dom";
import { Field, Form, FormElement } from "@progress/kendo-react-form";

const handleSubmit1 = (dataItem) => {
  alert(1);
};

const AppComponent = () => {
  return (
    <Form
      onSubmit={handleSubmit1}
      render={(formRenderProps) => (
        <FormElement>
          <button onClick={formRenderProps.submit} disabled={false}>
            Submit
          </button>
        </FormElement>
      )}
    />
  );
};

ReactDOM.render(<AppComponent />, document.querySelector("my-app"));

说明

两种方案本质都是让表单提交动作触发Kendo Form内部的提交流程,从而调用你定义的onSubmit回调函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:53:09