React BrowserRouter路由配置,不需要#号

本文介绍了如何在React项目中配置BrowserRouter,避免URL出现#号。通过解析router.js和index.js文件的内容,以及解决'Can’t resolve ‘react-router-dom’'的错误,详细讲解了安装与设置过程。同时,作者邀请读者检查package.json文件并讨论可能的优化方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

React BrowserRouter路由配置,不需要#号

介绍一下我的项目使用的路由,O(∩_∩)O~

路由文件:router.js

import React from 'react'
import { BrowserRouter as Router, Route } from 'react-router-dom';
import login from './login/login';

export default class RouteMap extends React.Component {
    render() {
        return (
            <Router>
                <div>
                    <Route exact path="/" component={login} />
                </div>
            </Router>
        )
    }
}

启动文件 index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './router';
import * as serviceWorker from './serviceWorker';

class Start extends React.Component {
    render() {
        return (
            <App />
        );
    }
}

ReactDOM.render(<Start />, document.getElementById('root'));
serviceWorker.unregister();

另外,如果你的项目报错找不到 Can’t resolve ‘react-router-dom’,因为你没有安装模板,使用以下命令安装

$ npm install --save react-router-dom

安装完毕后,检查你的 package.json 文件是否自动添加了依赖项:

...
{
  "name": "object",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "antd": "^3.19.5",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-router-dom": "^5.0.1", //这个哟!!
    "react-router-native": "^5.0.1",
    "react-scripts": "3.0.1"
  },
 ...

至此,已OK,这是基于本人的理解写出来的,自己所有的项目也是使用的这个路由,如有不对和优化的地方,还请大佬在评论区指出,蟹蟹啦,嘤嘤嘤~QQ:1547164339

<think>好的,我需要回答用户关于在React中使用React Router配置路由的问题。首先,我得回忆一下React Router的基本用法和步骤。根据用户提供的引用内容,特别是引用[2]和[5],React Router用于管理单页面应用的路由,而react-router-dom是常用的库。 首先,安装react-router-dom,用户提到使用npm安装,所以第一步应该是安装依赖。然后,需要引入必要的组件,比如BrowserRouter、Routes、Route等。引用[5]中的示例使用了createBrowserRouter和RouterProvider,这可能是在较新版本中的方法。但传统的配置方式通常使用BrowserRouter包裹整个应用,并在内部使用Routes和Route组件定义路径和对应的组件。 接下来,我需要考虑如何组织路由结构。用户可能需要定义多个路由,每个路由对应一个组件。比如,主页路径&#39;/&#39;对应Home组件,&#39;/about&#39;对应About组件。此外,可能还需要处理嵌套路由,这在React Router v6中可以通过在父组件中使用Outlet组件来实现。 另外,引用[5]提到使用React.lazy和Suspense进行代码分割,这也是优化应用性能的一个方法。因此,在示例中入动态导入组件的部分会更好。 需要注意的还有,引用[3]和[4]提到了同的路由库,但用户明确问的是react-router-dom,所以应集中讨论这个库。同时,导航部分需要使用Link组件代替传统的a标签,以避免页面刷新。 最后,确保示例代码正确,语法符合要求,比如使用$...$包裹行内代码,独立代码块用```标注。同时,检查是否需要添引用标识,例如在安装步骤引用[1]和[2]。</think>### 如何在 React配置路由(使用 React Router) #### 1. 安装依赖 首先通过 npm 或 yarn 安装 `react-router-dom`: ```bash npm install react-router-dom # 引用[1] ``` #### 2. 基本路由配置 使用 `createBrowserRouter` 和 `RouterProvider` 定义路由结构: ```javascript // App.jsx import { createBrowserRouter, RouterProvider } from &#39;react-router-dom&#39;; import Home from &#39;./pages/Home&#39;; import About from &#39;./pages/About&#39;; const router = createBrowserRouter([ { path: &#39;/&#39;, element: <Home />, }, { path: &#39;/about&#39;, element: <About />, }, ]); function App() { return <RouterProvider router={router} />; } ``` #### 3. 嵌套路由配置 在父路由中定义子路由,并使用 `<Outlet>` 组件渲染子内容: ```javascript // 定义嵌套路由 const router = createBrowserRouter([ { path: &#39;/&#39;, element: <Layout />, children: [ { index: true, element: <Home /> }, { path: &#39;profile&#39;, element: <Profile /> }, ], }, ]); // Layout.jsx import { Outlet } from &#39;react-router-dom&#39;; function Layout() { return ( <div> <Header /> <Outlet /> {/* 子路由内容在此渲染 */} <Footer /> </div> ); } ``` #### 4. 动态路由与参数传递 通过 `:` 符定义动态路径参数,使用 `useParams` 获取参数: ```javascript // 路由配置 { path: &#39;/user/:id&#39;, element: <UserDetail /> } // UserDetail.jsx import { useParams } from &#39;react-router-dom&#39;; function UserDetail() { const { id } = useParams(); return <div>User ID: {id}</div>; } ``` #### 5. 导航与链接 使用 `<Link>` 组件实现页面跳转(避免整页刷新): ```javascript import { Link } from &#39;react-router-dom&#39;; function Header() { return ( <nav> <Link to="/">Home</Link> <Link to="/about">About</Link> </nav> ); } ``` #### 6. 代码分割优化 通过 `React.lazy` 和 `<Suspense>` 实现按需载: ```javascript import { Suspense, lazy } from &#39;react&#39;; const About = lazy(() => import(&#39;./pages/About&#39;)); // 路由配置中使用: { path: &#39;/about&#39;, element: ( <Suspense fallback={<div>Loading...</div>}> <About /> </Suspense> ) } ``` #### 完整示例 ```javascript // main.jsx import React from &#39;react&#39;; import ReactDOM from &#39;react-dom/client&#39;; import { RouterProvider } from &#39;react-router-dom&#39;; import { createBrowserRouter } from &#39;react-router-dom&#39;; const router = createBrowserRouter([ { path: &#39;/&#39;, element: <Home /> }, { path: &#39;/contact&#39;, element: <Contact /> }, ]); ReactDOM.createRoot(document.getElementById(&#39;root&#39;)).render( <React.StrictMode> <RouterProvider router={router} /> </React.StrictMode> ); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值