菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
97
0

怎么安装react-router

原创
05/13 14:22
阅读数 1048

怎么安装react-router

安装命令:npm install react-router

react-router路由提供了一些router的核心api,包括Router, Route, Switch等,但是它没有提供dom操作进行跳转的api。

React-Router提供了两个组件:Router和Route。下面看最简单的例子:

src/Routes.js

import React from 'react'
import {Router,Route,browserHistory} from 'react-router'

import Home from './pages/Home.js'
import About from './pages/About.js'
import NotFound from './pages/NotFound.js'

const history = browserHistory;
const Routes = () =>(
  <Router history = {browserHistory}>
    <Route path = "home" component = {home}>
    <Route path = "about" component = {About}>
    <Route path = "*" component = {NotFound}>
  </Router >
);
export default Routes;

Routes.js文件返回一个组件,该组件输出一个Router组件实例,路由及其规则都封装在里面,Route组件内的path和component把路径和组件对应起来。

路由链接:

HTML的链接被点击时会发生默认跳转,这不符合单页面应用的要求,所以React-Router提供了一个<Link>组件来支持路由链接。

1.<link>组件产生html链接。

2.对该链接的点击不会引发跳转,而是把目标路径发送给Router,让Router依据关联显示对应的组件。

3.<Link>组件的to指向一个路径,对应的路径在Router中应该有定义。

import React from 'react'
import {Link} from 'react-router'

const view = ()=>{
  <div>
    <ul>
      <li><Link to="/home">Home</Link></li>
      <li><Link to="/about">About</Link></li>
    </ul>  
  </div>
};

嵌套:

Route提供了嵌套功能。路由的嵌套和组件层级的显示是对应的。当我们触发了子路由的跳转时,父层路由显示的东西可以依然保留在页面上,只有子层路由对应的组件发生变更。

比如在src/pages/App.js中定义组件App:

import React from 'react'
import {view as TopMenu} from '../components/TopMenu'

const App = ({children}) =>{
  return (
    <div>
      <TopMenu />
      <div>{children}</div>
    </div>
  )
}
export default App

上面代码中children是App的子组件。这是React中原生的特性。

React-Router中路由嵌套需要组件和Route的双边设置:

在组件中将children获得的子组件在恰当位置渲染;

在Route中 ,则是设置嵌套的<Route>

const Routes = ()=>(
  <Router history = {browserHistory}>
    <Route path = "/" component = {App}>
      <Route path = "hone" component={home} />
      <Route path = "hone" component={home} />
      <Route path = "hone" component={home} />
    </Route>
  </Route>
);

发表评论

0/200
97 点赞
0 评论
收藏
为你推荐 换一批