
react路由使用以及封装
发布日期:2021-05-08 00:21:58
浏览次数:11
分类:原创文章
本文共 3746 字,大约阅读时间需要 12 分钟。
基本使用
第一步(安装)
yarn add react-router-dom# or, if you're not using yarnnpm install react-router-dom
第二步(引入)
- 在目录container下新建两个文件,home.js和detail.js
//home.jsimport React from 'react';export default class Home extends React.Component { render() { return ( <div> <a href='/detail'>去detail</a> </div> ) }}
//detail.jsimport React from 'react';export default class Home extends React.Component { render() { return ( <div> <a href='/'>回到home</a> </div> ) }}
- 我们可以在src中新建目录router,然后建Router.js文件
//Router.jsimport React from 'react'import ReactDOM from "react-dom";import { BrowserRouter as Router, Route } from "react-router-dom";import Home from '../containers/home.js'import Detail from '../containers/detail.js'import App from '../App';const BasicRoute = () => ( <Router> <div> <Route exact path="/"> <Home /> </Route> <Route exact path="/App"> <App /> </Route> <Route path="/detail"> <Detail /> </Route> </div> </Router>);export default BasicRoute;
第三步(在index.js中引入路由组件)
ReactDOM.render( <Router />, document.getElementById('root'));
路由封装
第一步
- 新建store目录,router.js
//router.jsimport React from 'react'import ReactDOM from "react-dom";import { BrowserRouter as Router, Route} from "react-router-dom";import Home from '../containers/home.js'import Detail from '../containers/detail.js'import A from '../containers/A.js'import Index from '../containers/index.js'import advantage from '../containers/advantage.js'import App from '../App';import Store from '../components/testStore'const routes = [ { path: '/', component: App, exact: true, }, { path: '/advantage', component: advantage, children: [ { path: '/advantage/advantage1', component: A } ] }, { path: '/Home', component: Home, exact: true, }, { path: '/store', component: Store, exact: true, },]export { routes };
第二步
- index.js中添加
(<BrowserRouter> { renderRoutes(routes)} </BrowserRouter>),
// index.jsimport React from 'react';import ReactDOM from 'react-dom';import { routes } from './router/Router.js';import { BrowserRouter } from 'react-router-dom';import { renderRoutes } from 'react-router-config';import Index from './containers/index.js'ReactDOM.render( (<BrowserRouter> { renderRoutes(routes)} </BrowserRouter>), document.getElementById('root'));
组件中使用
{ renderRoutes(route.children)}
import React from 'react';import { Link } from 'react-router-dom';import { renderRoutes } from 'react-router-config'export default class FyAdvantage extends React.Component { constructor(props) { super(props); this.state = { route: props.route, } } render (){ const route = this.state.route; return( <div> { renderRoutes(route.children)} <div> <ul> <li> <Link to="/advantage/advantage1">advantage1</Link> </li> <li> <Link to="/advantage/advantage2">advantage2</Link> </li> <li> <Link to="/advantage/advantage3">advantage3</Link> </li> </ul> </div> </div> ) }}
- 这样就达到了路由嵌套,而且添加路由也相对简单了
下一篇:
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月14日 11时08分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
tomcat加载部署webapps目录下的项目
2021-05-08
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
2021-05-08
方法重写
2021-05-08
Threading Programming Guide(多线程编程指南)
2021-05-08
Swift--14类型扩展
2021-05-08
Socket通信原理和基础实践
2021-05-08
Java求逆波兰表达式的结果(栈)
2021-05-08
SDWebImage--http图片加载不出来的问题
2021-05-08
Application received signal SIGSEGV
2021-05-08
MySQL删除数据库时的错误(errno: 39)
2021-05-08
关于MySQL连接时出现的错误之一
2021-05-08
eclipse下Struts2配置文件添加自动提示
2021-05-08
Win10 JDK配置环境变量以及为什么需要配置每部分的原因
2021-05-08
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2021-05-08
SLAM学习笔记-求解视觉SLAM问题
2021-05-08
target加载不出文件的原因之一
2021-05-08
顺序表和链表的优缺点
2021-05-08
普歌-允异团队-HashMap面试题
2021-05-08
Vue_cli实现抽奖
2021-05-08
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
2021-05-08