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

提交表单后如何跳转至其他页面?需添加何种代码?

React + redux-form 表单提交后跳转页面实现方案

嘿,我来帮你搞定这个表单提交后跳转的问题~其实核心就是利用React Router的跳转能力,配合redux-form的提交回调来实现,具体步骤和修改后的代码如下:

前提准备

首先确保你的项目已经安装并配置好了React Router(主流用v6版本,这里主要以此为例),如果还没装的话,先执行安装命令:

npm install react-router-dom
# 或者用yarn
yarn add react-router-dom

具体代码修改步骤

1. 引入路由跳转钩子

在你的simple.js文件里,导入React Router的useNavigate钩子:

import React from 'react';
import { Field, reduxForm } from 'redux-form';
// 新增:导入useNavigate
import { useNavigate } from 'react-router-dom';

2. 在组件内获取跳转函数

在SimpleForm组件内部,调用useNavigate获取跳转方法:

const SimpleForm = props => {
  const { handleSubmit, pristine, reset, submitting } = props;
  // 新增:获取navigate函数
  const navigate = useNavigate();

  // ... 其他代码
};

3. 定义提交成功后的处理函数

写一个处理表单提交的函数,这里可以先处理表单数据(比如发送给后端API),完成后执行跳转:

const SimpleForm = props => {
  const { handleSubmit, pristine, reset, submitting } = props;
  const navigate = useNavigate();

  // 新增:提交处理函数
  const onFormSubmit = async (formData) => {
    // 第一步:处理表单数据,比如发送API请求
    try {
      // 示例:向后端提交数据
      await fetch('/api/user-info', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(formData)
      });
      // 第二步:提交成功后跳转目标页面,比如'/profile'或者'/success'
      navigate('/success');
    } catch (error) {
      // 处理提交失败的情况,比如提示用户
      console.error('表单提交失败:', error);
      alert('提交出错啦,请稍后重试~');
    }
  };

  // ... 原有的表单渲染代码
};

4. 将处理函数传给handleSubmit

把刚才写的onFormSubmit传给redux-form的handleSubmit,替换原来的空回调:

return (
  <form onSubmit={handleSubmit(onFormSubmit)}> {/* 这里修改为handleSubmit(onFormSubmit) */}
    <div>
      <label>First Name</label>
      <div>
        <Field name="firstName" component="input" type="text" placeholder="First Name" required />
      </div>
    </div>
    {/* 其他表单字段... */}
    <div>
      <button type="submit" disabled={pristine || submitting}>Submit</button>
      <button type="button" disabled={pristine || submitting} onClick={reset}>Reset</button>
    </div>
  </form>
);

针对React Router v5的适配

如果你的项目用的是React Router v5,只需要把useNavigate换成useHistory即可:

// 导入useHistory
import { useHistory } from 'react-router-dom';

// 在组件内获取history对象
const history = useHistory();

// 跳转时用history.push
history.push('/success');

这样修改后,当用户填写完表单点击提交,只要数据处理完成(不管是同步还是异步),就会自动跳转到你指定的页面啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:12:12