React Router的一个完整示例

3 篇文章 0 订阅
1 篇文章 0 订阅

本博文提供一个单网页结构网页(SPA)使用React Router路由控制跳转的完整例子。

可以在我的github 中clone或者fork
https://github.com/zrysmt/react-demo/tree/master/demo03

关于配置可以查看我之前的一篇博客:一步一步进入React的世界(React+Webpack+ES6组合配置)

1.整个目录结构


- build是编译后的文件夹
- src 放入源码
+ components组件
+ global 通用组件和SCSS
+ … 分模块
+ app.js入口
- index.html

2.源码

关于源码可以在开头给出的github中找到详细的完整例子,这里就介绍重要的几个文件源码
记住要安装react-router

npm i react-router -S

2.1 index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Our Home,Our Heart</title>
    <meta name="viewport" content="width=device-width,initial-scale = 1.0,user-scalable=no">
</head>

<body>
    <div id="content">
    </div>
    <script src="build/bundle.js"></script>
</body>
</html>

2.2 入口文件app.js

关于react router的基础知识我们可以参考阮一峰老师的博客作为入门指导。

import React from 'react';
import ReactDOM from 'react-dom';
import {Router,Route,IndexRoute,hashHistory} from 'react-router';

import './components/global/global.scss';

import Nav from './components/global/menu';
import Home from './components/home/home';
import Story from './components/story/story';


class App extends React.Component{
    render(){
        return(
            <div>   
                <Nav/>
                {this.props.children}
            </div>              
        )
    }
}

ReactDOM.render((
    <Router history={hashHistory}>
        <Route path="/" component={App}>
            <IndexRoute component={Home}/>
            <Route path="/Story" component={Story}/>
        </Route>
    </Router>
    ),document.body
);

简单解释下:
组件App除了包含Nav组件,还应该包括主体内容
当使用index.html访问的时候,是在项目根目录下,这样会先加载APP组件,APP组件包含{this.props.children},便会加载<IndexRoute/>里面定义的组件Home。用户访问’/’相当于:

<App>
  <Nav/>
  <Home/>
</App>

2.3 Nav组件

/components/global/menuLi.jsx
/components/global/menu.jsx

  • 最小一块组件menuLi.jsx
import React from 'react';
import {Link} from 'react-router';
class MenuLi extends React.Component{
    render(){
        let linkTo = this.props.name =="Home"?"/":"/"+this.props.name;
        return (
            <li>
                <Link to={linkTo}>
                    {this.props.name}
                </Link>
            </li>
        );
    }
}
export default MenuLi;

Link组件用于取代<a>元素,生成一个链接,允许用户点击后跳转到另一个路由
- Nav组件 menu.jsx

import React from 'react';
import ReactDOM from 'react-dom';
import MenuLi from './menuLi';
import './menu.scss';

let menuLis = ["Home","Story","Travel","TimeLine","Future"];
class MenuUl extends React.Component{
    render(){
        return(
            <ul>
            {
                menuLis.map(function(menuLi) {
                    return <MenuLi name={menuLi}/>
                })
            }
            </ul>
        );  
    }
} 
class Nav extends React.Component{
    render(){
        return(
            <nav>
                <div id="menu">
                    <MenuUl/>           
                </div>
            </nav>
        )
    }
}
export default Nav;

2.4 Home组件

/components/home/home.jsx,示例比较简单

import React from 'react';
import ReactDOM from 'react-dom';
import "./home.scss";
class Home extends React.Component{
    render(){
        return (
            <h5>这是home</h5>
        );
    }
}
export default Home;

2.5 Story组件

import React from 'react';
import ReactDOM from 'react-dom';
import "./story.scss";

class Story extends React.Component{
    render(){
        return (
            <h5>这是story</h5>
        );
    }
}
export default Story;

其余几个组件不一一列出了

可以在我的github 中clone或者fork,查看完整的例子代码

参考阅读:

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要编写一个使用react-router-dom的路由功能,您需要按照以下步骤进行操作: 1. 首先,确保您已经安装了react-router-dom库。您可以使用npm或yarn来安装它。 2. 在您的React项目中,导入所需的组件和方法。通常,您需要导入BrowserRouter和Route组件。 3. 创建您的React组件,并在组件中定义路由。您可以使用Route组件来定义不同路径对应的组件。 4. 在您的根组件中,使用BrowserRouter将您的应用包装起来。将您的顶级组件放在BrowserRouter组件中。 5. 在ReactDOM.render方法中,将根组件和根DOM节点作为参数传递给ReactDOM.render函数。 下面是一个简单的示例: ```javascript import React from "react"; import ReactDOM from "react-dom"; import { BrowserRouter, Route } from "react-router-dom"; function Home() { return <h1>Home Page</h1>; } function About() { return <h1>About Page</h1>; } function App() { return ( <BrowserRouter> <Route path="/" exact component={Home} /> <Route path="/about" component={About} /> </BrowserRouter> ); } ReactDOM.render(<App />, document.getElementById("root")); ``` 在上面的示例中,我们定义了两个组件Home和About,并使用Route组件将它们与路径关联起来。在App组件中,我们使用BrowserRouter将所有路由组件包装起来。 这样,当用户访问根路径时,将渲染Home组件,而访问/about路径时,将渲染About组件。 请注意,exact属性用于确保只有在路径完全匹配时才渲染组件。 以上是一个基本的使用react-router-dom的路由功能的示例。根据您的需求,您可以添加更多的路由和组件来构建更复杂的应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值