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

react-router-dom中表单默认值无法传递至Info页面的问题求助

问题修复方案

你的代码存在几个关键问题导致表单信息无法正确传递到Info页面,下面是具体修正点和完整代码:

1. 修正props名称大小写错误

在Form.js中,你接收的props是onChange,但组件内写成了HandleChange(首字母大写),导致输入事件无法触发状态更新,需统一为小写的onChange。

2. 修正表单元素name与state key不匹配

第一个输入框的name="isim"与App组件中state的keyname不匹配,会导致输入名字时无法更新state,需改为name="name"。

3. 修正拼写错误

textarea的defaultValue={form.adsress}中adsress是拼写错误,应改为form.address。

4. 优化表单提交逻辑(可选但更规范)

用Link包裹按钮跳转虽能生效,但更推荐使用表单submit事件配合useNavigate完成跳转,避免意外的表单默认提交行为。


修正后的完整代码

App.js

import React, { useState } from 'react'
import './App.css';
import { Route, Routes } from 'react-router-dom'
import Info from './Info';
import Form from './Form';

function App() {

  const [form, setForm] = useState({ name: "", city: "", birth: "", color: "", address: "" });

  const handleChange = (event) => {
    setForm({ ...form, [event.target.name]: event.target.value })
  }

  return (
    <div className="App">
      <h2>Enter your informations</h2>
      <Routes>
        <Route path="/" exact element={<Form form={form} onChange={handleChange}/>}></Route>
        <Route path="/info" element={<Info form={form}/>}></Route>
      </Routes>
    </div>
  );
}

export default App;

Form.js

import React from 'react'
import { useNavigate } from 'react-router-dom'

function Form({ form, onChange }) {
  const navigate = useNavigate();

  const handleSubmit = (e) => {
    e.preventDefault(); // 阻止表单默认提交行为
    navigate('/info'); // 跳转到Info页面
  }

  return (
    <div>
      <form onSubmit={handleSubmit}>
        <input type="text" name="name" defaultValue={form.name} onChange={onChange} placeholder="Enter your name" />
        <select name="city" defaultValue={form.city} onChange={onChange}>
          <option value="">Enter your city</option>
          <option value="Ankara">Ankara</option>
          <option value="İstanbul">İstanbul</option>
          <option value="İzmir">İzmir</option>
        </select>
        <input type="date" name="birth" defaultValue={form.birth} onChange={onChange}  />
        <input type="color" name="color" defaultValue={form.color} onChange={onChange} />
        <textarea name="address" placeholder="Enter your address" cols="20" rows="5" defaultValue={form.address} onChange={onChange}></textarea>
        <button type="submit">Send</button>
      </form>
    </div>
  )
}

export default Form

Info.js

import React from 'react'
import { Link} from 'react-router-dom'

function Info({form}) {
  return (
    <div>
      <p>Name: {form.name} </p>
      <p>City: {form.city}</p>
      <p>Birthday: {form.birth}</p>
      <p>Color: {form.color}</p>
      <p>Address: {form.address}</p>
      <Link to="/"><button>Back</button></Link>
    </div>
  )
}

export default Info

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:46:05