在React with TypeScript中提交表单后更改路由可以通过以下步骤实现:
npm install react-router-dom
import React, { useState } from 'react';
import { useHistory } from 'react-router-dom';
const MyForm: React.FC = () => {
const [formData, setFormData] = useState({ name: '', email: '' });
const history = useHistory();
const handleSubmit = (event: React.FormEvent) => {
event.preventDefault();
// 处理表单提交逻辑
// ...
// 更改路由
history.push('/new-route');
};
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
const { name, value } = event.target;
setFormData((prevData) => ({ ...prevData, [name]: value }));
};
return (
<form onSubmit={handleSubmit}>
<input type="text" name="name" value={formData.name} onChange={handleChange} />
<input type="email" name="email" value={formData.email} onChange={handleChange} />
<button type="submit">提交</button>
</form>
);
};
export default MyForm;
在上面的代码中,我们使用useState
来管理表单数据的状态,并使用useHistory
来获取路由历史记录对象。在表单的handleSubmit
函数中,我们可以处理表单提交的逻辑,并使用history.push
方法来更改路由。
BrowserRouter
包裹你的路由组件,并将表单组件添加到相应的路由路径上。例如:import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import MyForm from './MyForm';
const App: React.FC = () => {
return (
<Router>
<Route path="/form" component={MyForm} />
{/* 其他路由路径和组件 */}
</Router>
);
};
export default App;
在上面的代码中,我们使用BrowserRouter
来包裹我们的路由组件,并使用Route
来定义路径/form
与MyForm
组件的关联。
现在,当你在表单中提交数据后,路由将会自动更改到/new-route
路径。
请注意,以上代码示例中使用的是React Router库来处理路由。如果你使用的是其他路由库或框架,可以根据其文档和API进行相应的调整。
领取专属 10元无门槛券
手把手带您无忧上云