加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React-router history / 路由 (课件2019-1-19)

发布时间:2020-12-15 20:35:39 所属栏目:百科 来源:网络整理
导读:http://localhost http://localhost/static/index.html / - index.html http://localhost/index.html ? 以前后台接收到前端的请求,不但要发送数据给前端还要返回页面 前端路由,切换页面不需要服务器返回,减少了服务器压力、单页应用 公共资源只需要请求一
http://localhost
http://localhost/static/index.html
/ -> index.html
http://localhost/index.html
?
以前后台接收到前端的请求,不但要发送数据给前端还要返回页面

前端路由,切换页面不需要服务器返回,减少了服务器压力、单页应用
公共资源只需要请求一次即可,前端的职责就更多,前端比重就较高(逻辑多了)

安装路由:

  npm i?react-router-dom

https://reacttraining.com/react-router/
?
history路由(浏览器历史记录管理)在服务器下访问
  添加浏览器历史记录的
   history.pushState(数据,‘浏览器都忽略的名字‘,你显示的url地址)
   onpopstate
    当你触发了浏览器的前进或者后退就会触发这个事件
    在这个事件中,ev下有state属性,可以接收到pushState时的数据

  history.length 查看历史记录中的个数(据说最高是50个)

   back() 回退
   forward() 前进
   go()

BrowserRouter : (浏览器路由)
1.import {BrowserRouter as Router} from ‘react-router-dom‘;

2.引入把Router包在ReactDOM.render(根下);
比如:
ReactDOM.render(<Router><App /></Router>);

3.配置路由:
   import {Route} from ‘react-router-dom‘;
  <Route path="/home" component={组件}/>
(1)component={组件}也可以是一个函数( 函数声明组件)

   <Route path="/home" component={(props)=>{return <div>1234</div>}}/>

  props:
    在切换路由的时候记录的细节信息。
    是函数的情况下,要传入路由细节。
    在组件中,可以通过this.props去查看、使用

     match  ->  params、url
    location  ->  hash、search、state
    history  ->  go() push() replace()

   一般使用component的函数,都是使用函数声明组件。
注意:
  component如果放函数,一定要放有名的函数组件,
  不然(匿名函数)点击多次本路由,会多次挂载和卸载
?
一般判断使用可选组件,使用 render={(props)=>{}}
(2)render可以返回jsx或者一个组件,更喜欢通过render去判断使用需求的组件。

(3)children跟一个函数,不管你匹不匹配path都执行组件.

Redirect (重定向)
   <Redirect to="/dashboard"/>? ?等同于调用了replace(),替换了当前的url
  to后面可以跟字符串(路径即可),
  还可以跟对象(to={{pathname:‘/‘,search:‘?a=1&b=2‘})
  存放数据

特性:
  默认配置如果/下有组件,那么所有关于/xxx都吃得到/下的这个组件

如果,/下匹配组件,/下的xxx不想匹配/这个组件,那么可以在Route 下
加一个 exact 意思,只有/才能匹配到/下的组件。

<Route path="/one" /> /one/two 能显示one
<Route path="/one" exact/> /one/two 只能显示/two不能显示/one
?
/one????/one/two????true????no
/one????/one/two????false???yes
?
strict
  严格匹配

  在path为/detail/ 没有加strict那么 url为/detail能够匹配

  加了strict的时候,能匹配
    1./detail/
    2./detail/xxx


  可以2个一起用


<Link to="/路径">到路径</Link>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读