美文网首页
react-router4学习

react-router4学习

作者: 依然还是或者其他 | 来源:发表于2018-12-05 11:05 被阅读0次

近期学习了react相关知识,记录一下。

1.一般性使用

官方react-router 文档
https://reacttraining.com/react-router/web/example/basic

简单基本的用户在basic中已有比较好的介绍了。

如果要想让li标签根据当前路由显示不同的样式的话,需要用到NavLink,
在文档的列表中也有关于NavLink的API介绍 ,其中可以通过activeClassName
属性来设置路由触发的样式,也可以通过activeStyle来设置。

2.关于重定向

重定向需要使用Redirect组件来实现,对应文档中有相关介绍。

下面也是重定向比较常见的一种形式,在Router 组件的render属性中被调用。
需要注意的是:重定向需要写在最后,不然会发生报错。

<div>
      <HomeSearch/>
      <HomeNav data={initData} clickCallBack={this.clickHandler}/>

      <Route path={"/home"} component={HomeContent} />
      <Route path={"/channel/:type"} key={this.state.key} component={ContentRoute} />
      <Route exact path={"/"} render={()=><Redirect to={"/home"}/>}/>
</div>
3.传参

传参,如上图path={"/channel/:type"},
获取参数可以通过props.match来获取

4.路由跳转

自动跳转:路由跳转可以通过Link或NAVLink来实现
手动跳转:
引入import {withRouter} from 'react-router-dom'
在组件外围包一层withRouter,即export default withRouter(TestComponent)
然后在TestComponent通过调用this.props.history.push(/recommend/${item.dissid});进行跳转

注:withRouter(TestComponent) 如有看不懂,请查看高阶组件相关知识

5.结合react-router-config的使用

如果之前使用过vue-router这样的形式,也想react-router 有那样的路由配置管理,可以使用react-router-config这个包。
官方文档中的一个例子,如下,写一点注释
官方地址:https://www.npmjs.com/package/react-router-config

import { renderRoutes } from 'react-router-config'
 //路由配置,可单独写成一个文件
const routes = [
  { component: Root,
    routes: [
      { path: '/',
        exact: true,
        component: Home
      },
      { path: '/child/:id',
        component: Child,
        routes: [
          { path: '/child/:id/grand-child',
            component: GrandChild
          }
        ]
      }
    ]
  }
]
 
const Root = ({ route }) => (
  <div>
    <h1>Root</h1>
    {/* child routes won't render without this */}
    {renderRoutes(route.routes)}
  </div>
)
 
const Home = ({ route }) => (
  <div>
    <h2>Home</h2>
  </div>
)
 
const Child = ({ route }) => (
  <div>
    <h2>Child</h2>
    {/* child routes won't render without this */}
    {renderRoutes(route.routes, { someProp: 'these extra props are optional' })}
  </div>
)
 
const GrandChild = ({ someProp }) => (
  <div>
    <h3>Grand Child</h3>
    <div>{someProp}</div>
  </div>
)
 
 //BrowserRouter 下只能有一个子元素,若有两个并列的子组件,可以先套一层div
ReactDOM.render((
  <BrowserRouter>
    {/* kick it all off with the root route */}
    {renderRoutes(routes)}
  </BrowserRouter>
), document.getElementById('root'))

如果要实现按需加载,可以使用react-loadable,使用方法请参考官方。

相关文章

  • react-router4代码分割

    react-router4代码分割 react-router4官方文档: https://reacttrainin...

  • react-router4升级

    react-router4升级 react-router4 跟 redux 搭配,非路由组件,就是非直接匹配的 路...

  • 未看文章

    react-router4文档react-router4文档 # react-router 按需加载2.# 浅谈R...

  • react-router4学习

    近期学习了react相关知识,记录一下。 1.一般性使用 官方react-router 文档https://rea...

  • react-code_split

    初始化工程目录 创建async-component.js 引用component 可以结合react-router4使用

  • 【React.js 13】react-router4基础知识-2

    除了上一篇所讲的3个入门组件BrowserRouter、Router、Link。react-router4其实还有...

  • react-router4按需加载踩坑,填坑

    react-router4如何去实现按需加载Component,在router4以前,我们是使用getCompon...

  • React-Router4

    React-Router4 4是全新的版本, 和之前的版本不兼容, 浏览器和 RN 均兼容 React 开发单页应...

  • react-router4

    一、关于react-router react-router是一些封装好的组件用于前端路由,当我们点击的时候会出现一...

  • react-router4

    react-router 有dom和native两种版本但是使用方法一致安装npm install react-r...

网友评论

      本文标题:react-router4学习

      本文链接:https://www.haomeiwen.com/subject/smqicqtx.html