在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步创建的页面。

Screen Shot 2021-05-15 at 15.05.24.png
Screen Shot 2021-05-15 at 15.27.19.png

增加链接

创建到已创建的页面的链接。

由于在 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;

Screen Shot 2021-05-15 at 15.42.44.png
广告
将在 10 秒后关闭
bannerAds