React 初探 [八] react-router 基本使用与侧边栏切换功能

react-router 说明

1、react-router 相关理解

  • react 的一个插件库
  • 专门用来实现一个SPA应用
  • 基于react 的项目基本都会用到此库

2、SPA的理解

  • 单页web 应用
  • 整个应用只有一个完整的页面
  • 点击页面中的链接不会刷新页面,本身也不会向服务器发送请求
  • 当点击链接时只会做页面的局部更新
  • 数据都需要通过ajax请求获取,并在前端异步展现

3、路由的理解

     ① 什么是路由?

         a) .一个路由就是一个映射关系(key-value)

         b).key  为路由路径,value 可能是function / component

     ②  路由分类 

          a).后台路由:node 服务器端路由,value 是function 用来处理客户端提交的请求并返回一个响应数据

          b).前端路由:浏览器端路由,value 是 component ,当请求的是路由path 时,浏览器前端没有发送http 请求,但界面会更新显示对应的组件。 

      ③ 后台路由 

           a).注册路由:router.get(path,function(req,res))

           b).当node 接收到一个请求时,根据请求路径找到匹配的路由,调用路由中的函数来处理请求,返回响应数据

       ④ 前端路由

            a). 注册路由:<Route path = "/about" component=(About)>

            b). 当浏览器的hash 变为#about 时 ,当前路由组件就会变成About 组件 

4、前端路由的实现

      ① history库

           a).网址:自行去github 搜索吧

           b). 管理浏览器会话历史(history)的工具库

           c).包装的是原生BOM中window.history 和 window.location.hash

 

以上是对路由的一些说明总结,因为已经有vue 经验,也粗略学习过node.js ,所以对以上很好理解,router 路由器  可以管理路由,route 路由就是一种对应关系,以key value 的形式 ,固定了路径和function 或者 component 组件的对应关系。

react-router 的基本使用

废话不多说 官网太香了 http://react-router.docschina.org/web/guides/philosophy

1、react router 相关API

  •       <BrowerRouter>
  •       <HashRouter>
  •       <Route>
  •       <Redirect>
  •       <Link>
  •       <NavLink>
  •       <Swithc>
  •        history

以上具体的就去官网看吧 ,并且每个都有对应的demo  简直优秀。

2、实践出真知

      需求:使用react-router 实现侧边栏导航切换

      效果如下,点击侧边栏切换 右侧切换显示不同的组件

      

 

 开始项目

      ① 安装react router ===》npm install --save react-router-dom 

      ② 引入bootstrap.css  文件 ===》项目中的样式直接使用的bootstrap 所以需要 

      ③  拆分组件 根组件 APP ,路由组件 About 和 Home ,虽然放哪不重要,但是在开发中同vue 路由组件放在pages 或者 views 文件夹下

      ④ 关注使用react router 实现需要关注的点 主要代码如下

         a). app 根组件需要使用 路由包裹,因此 index.js 项目入口文件需要引入 BrowserRouter

import React from 'react'
import ReactDOM from 'react-dom'
import './index.css'
// import App from './App'
// import App from './componments/app/App.jsx'
// react-router demo
// import App from './app/app-router.jsx'
import { BrowserRouter } from 'react-router-dom'

import App from './app/app-router.jsx'
import * as serviceWorker from './serviceWorker'

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </React.StrictMode>,

  document.getElementById('root'),
)

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister()

       b). 根组件App 中怎么实现路由导航 使用前端路由的注册方式 NavLikn + Route, 引入组件 对应路径即可 主要代码如下 :

// import React from 'react'
import React, { Component } from 'react'

import { NavLink, Switch, Route, Redirect } from 'react-router-dom'

import About from '../views/About.jsx'
import Home from '../views/Home.jsx'

import '../App.css'
class App extends Component {
  render() {
    return (
      <div className="App">
        <header classNameName="site-header jumbotron">
          <div className="container">
            <div className="row">
              <div className="col-xs-12">
                <h1>React Router Demo</h1>
              </div>
            </div>
            <div className="row">
              <div className="col-xs-2 col-xs-offset-2">
                <div className="list-group">
                  <NavLink className="list-group-item" to="/about">
                    About
                  </NavLink>
                  <NavLink className="list-group-item" to="/home">
                    Home
                  </NavLink>
                </div>
              </div>
              <div className="col-xs-6">
                <div className="panel">
                  <div className="panel-body">
                    <Switch>
                      <Route path="/about" component={About}></Route>
                      <Route path="/home" component={Home}></Route>
                      <Redirect to="/about"></Redirect>
                    </Switch>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </header>
      </div>
    )
  }
}
// function App() {}

export default App

   c). About 和 Home 组件就按需完成就可以了

以上是react router 小demo的主要代码,完整代码已经提交到 git 了 地址

项目地址

https://gitee.com/xiaozhidayu/my-react     

对于编程学习来说 敲一敲还是会更多点收获,在react 入门的路上越走越顺 ,come on!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值