学习使用react-router

浏览器反馈

在这里插入图片描述

这里我们可以看出,每次点击不同的a标签,输出在控制台上的数据都不一样

对他有一个简单认识之后,我们再来看一下,基于hash的路由

React Router

======================================================================

安装


npm i -S react-router-dom

准备数据


//src–>view–>index.js

import React from ‘react’

export default function IndexPage (props){

console.log(props)

return

首页

}

//src–>view–>about.js

import React from ‘react’

export default function AboutPage (){

return

关于我们

}

//app.js

import React from ‘react’

import {Route} from ‘react-router-dom’

import IndexPage from ‘./view/index’

import AboutPage from ‘./view/about’

function App() {

return

<Route path=“/” component={IndexPage } />

}

export default App

浏览器反馈

在这里插入图片描述

这里的报错原因是因为,他需要在入口文件当中,单独引入路由组件,并将你的所有内容全部包裹起来

  1. BrowserRouter 组件

import React from ‘react’;

import ReactDOM from ‘react-dom’;

import {BrowserRouter} from ‘react-router-dom’

import App from ‘./app’;

ReactDOM.render(

,

document.getElementById(‘root’)

);

  1. HashRouter 组件

import React from ‘react’;

import ReactDOM from ‘react-dom’;

import {HashRouter} from ‘react-router-dom’

import App from ‘./app’;

ReactDOM.render(

,

document.getElementById(‘root’)

);

这两个组件在开发环境中没有任何区别,在生产环境中的区别是hash在路径上会有一个#号,而browser没有

浏览器反馈

在这里插入图片描述

在这里插入图片描述

exact


exact 属性表示路由使用 精确匹配模式,非 exact 模式下 '/' 匹配所有以 '/' 开头的路由

现在我们的页面是显示了,但是可以看出,在首页的时候没什么问题,但是在about页面时,我们的index页面内容也显示了出来

错误原因:path中:匹配url的方式不是相等,而是以 指定的url 开头

处理方式:使用exact严格模式

浏览器反馈

在这里插入图片描述

现在我们的页面问题已经得到处理了

Link 组件


Link 组件用来处理 a 链接 类似的功能(它会在页面中生成一个 a 标签),但设置这里需要注意的,react-router-dom 拦截了实际 a 标签的默认动作,然后根据所有使用的路由模式(Hash 或者 HTML5)来进行处理,改变了 URL,但不会发生请求,同时根据 Route 中的设置把对应的组件显示在指定的位置

to 属性类似 a 标签中的 href

// src–>component–>nav.js

import React from ‘react’

import {Link} from ‘react-router-dom’

export default function Nav(){

return

首页

|

关于我们

}

// app.js

import React from ‘react’

import {Route} from ‘react-router-dom’

import IndexPage from ‘./view/index’

import AboutPage from ‘./view/about’

import Nav from ‘./component/nav’

function App() {

return

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值