在React Router中进行路由(React + TypeScript环境)
在这篇文章中,我们将介绍如何使用React Router库进行路由操作。
1. 创建一个 React + TypeScript 项目
您可以按照以下命令创建项目,这在这篇文章中有详细介绍。
npx create-react-app react-sample --template typescript
安装 react-router-dom
安装TypeScript版本的react-router-dom。
npm install react-router-dom @types/react-router-dom
3. 創建想要遷移的頁面組件。
src/创建要转到的页面组件。
这次我想创建一个名为Form的页面,所以我将创建以下文件。
import React from "react";
import "./Form.css";
const Form = () => {
return <div className="form"> Form Component</div>;
};
export default Form;
src/我会为以下部分创建CSS。
.form {
text-align: center;
margin-top: 40px;
font-size: 28px;
}
重新编写index.tsx文件
我们将使用之前创建的Form组件和从react-router-dom导入的必要模块进行加载和使用。
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import Form from "./Form";
import reportWebVitals from "./reportWebVitals";
import { Route, BrowserRouter } from "react-router-dom";
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<div>
<Route exact path="/" component={App} />
<Route exact path="/form" component={Form} />
</div>
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
<Route exact path="/" component={App} />
<Route exact path="/form" component={Form} />
在上述的代码部分中进行了路由配置,当连接到/时,将显示首页,连接到/form时,将显示第3步创建的页面。
增加链接
创建到已创建的页面的链接。
由于在 src/App.tsx 文件中包含了首页的代码,因此我们将在这里添加一个链接。
import { Link } from "react-router-dom";
<Link className="App-link" to="/Form">
Form
</Link>
将上述代码添加到 src/App.tsx 中
import React from "react";
import logo from "./logo.svg";
import "./App.css";
import { Link } from "react-router-dom";
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
<Link className="App-link" to="/Form">
Form
</Link>
</header>
</div>
);
}
export default App;