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> 
          (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
推荐文章
            站长推荐
            
        热点阅读
            