经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » React » 查看文章
React中前端路由的示例代码
来源:jb51  时间:2022/4/18 10:11:12  对本文有异议

一. url是什么

访问不同url, 展示不同的组件

二. 使用步骤

安装React路由:命令行中执行npm install react-router-dom --save(注意此处的版本为npm install react-router-dom@4.3.1 --save)

两个js文件,分别为list.js和newButton.js,要实现访问localhost:3000/button的时候就显示button.js;访问localhost:3000/list的时候就显示list.js。代码如下:

list.js

  1. import React, {Component} from "react";
  2.  
  3. import {List} from 'antd';
  4.  
  5. const data = [
  6. 'aaa',
  7. 'bbb',
  8. 'ccc',
  9. 'ddd'
  10. ]
  11. class List extends Component {
  12. render() {
  13. return (
  14. <List style={{marginLeft: 20,
  15. marginTop: 20,
  16. marginRight: 20}}
  17. header={<div>Header</div>}
  18. footer={<div>Footer</div>}
  19. bordered
  20. dataSource={data}
  21. renderItem={item=>(<List.Item>{item}</List.Item>)}
  22. />
  23. )
  24. }
  25. }
  26.  
  27. export default List

newButton.js

  1. import React, {Component} from "react";
  2.  
  3. import {List} from 'antd';
  4.  
  5. const data = [
  6. 'aaa',
  7. 'bbb',
  8. 'ccc',
  9. 'ddd'
  10. ]
  11. class NewList extends Component {
  12. render() {
  13. return (
  14. <List style={{marginLeft: 20,
  15. marginTop: 20,
  16. marginRight: 20}}
  17. header={<div>Header</div>}
  18. footer={<div>Footer</div>}
  19. bordered
  20. dataSource={data}
  21. renderItem={item=>(<List.Item>{item}</List.Item>)}
  22. />
  23. )
  24. }
  25. }
  26.  
  27. export default NewList

在index.js中使用router
1)引入路由:import { BrowserRouter, Route, Link } from 'react-router-dom';
2)渲染BrowserRouter组件,其中包含一条条的路由

  1. class Entry extends Component {
  2. render() {
  3. return (
  4. <BrowserRouter>
  5. <div>
  6. <Route path='/list' component={NewList}/>
  7. <Route path='/button' component={NewButton}/>
  8. </div>
  9. </BrowserRouter>
  10. )
  11. }
  12. }

3)浏览器中输入localhost:3000后,什么后没显示出来,因为此时没有匹配的路由

在这里插入图片描述

4)根据路由的配置,浏览器中输入:localhost:3000/list就会显示newList组件
输入:localhost:3000/button就会显示newButton组件

在这里插入图片描述

在这里插入图片描述

注:BrowserRoute表示定义一个路由,Route表示一个路由项,

5)如想通过点击newButton里的按钮后跳转到列表页,需要用到Link(使用React路由后,就不能使用a标签进行页面跳转,需要借助Link标签完成路由的跳转)

步骤:在newButton中引入Link后用Link标签跳转

newButton.js

  1. import React, {Component, Fragment} from "react";
  2. import { Link } from "react-router-dom";
  3.  
  4. import {Button} from 'antd';
  5.  
  6. class NewButton extends Component {
  7. render() {
  8. return (
  9. <Link to='/list'>
  10. <Button type="primary">按钮</Button>
  11. </Link>
  12. )
  13. }
  14. }
  15.  
  16. export default NewButton;

6)跳转页面的过程中,携带参数,如何获取参数,如

  1. class NewButton extends Component {
  2. render() {
  3. return (
  4. <Link to='/list/123'>
  5. <Button type="primary">按钮</Button>
  6. </Link>
  7. )
  8. }
  9. }

解决方式:在index.js配置路由部分,给list地址后加一个变量,表示传过来的值为变量id的值

  1. <Route path='/list/:id' component={<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->NewList}/>

之后在newList组件中打印出console.log(this.props)

在这里插入图片描述

可看到params里有变量id的值为123

完整代码如下:
index.js中

  1. import React, {Component}from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { BrowserRouter, Route } from 'react-router-dom';
  4. import 'antd/dist/antd.css';
  5. import NewList from './newList'
  6. import NewButton from './newButton'
  7.  
  8. class Entry extends Component {
  9. render() {
  10. return (
  11. <BrowserRouter>
  12. <div>
  13. <Route path='/list/:id' component={NewList}/>
  14. <Route path='/button' component={NewButton}/>
  15. </div>
  16. </BrowserRouter>
  17. )
  18. }
  19. }
  20.  
  21. // 将内容挂载到页面上
  22. ReactDOM.render(<Entry />, document.getElementById('root'));
  23.  

newList.js中

  1. import React, {Component} from "react";
  2.  
  3. import {List} from 'antd';
  4.  
  5. const data = [
  6. 'aaa',
  7. 'bbb',
  8. 'ccc',
  9. 'ddd'
  10. ]
  11. class NewList extends Component {
  12. render() {
  13. console.log(this.props)
  14. return (
  15. <List style={{marginLeft: 20,
  16. marginTop: 20,
  17. marginRight: 20}}
  18. header={<div>Header</div>}
  19. footer={<div>Footer</div>}
  20. bordered
  21. dataSource={data}
  22. renderItem={item=>(<List.Item>{item}</List.Item>)}
  23. />
  24. )
  25. }
  26. }
  27.  
  28. export default NewList

newButton.js中

  1. import React, {Component} from "react";
  2. import { Link } from "react-router-dom";
  3.  
  4. import {Button} from 'antd';
  5.  
  6. class NewButton extends Component {
  7. render() {
  8. return (
  9. <Link to='/list/123'>
  10. <Button type="primary">按钮</Button>
  11. </Link>
  12. )
  13. }
  14. }
  15.  
  16. export default NewButton;

到此这篇关于React中前端路由的示例代码的文章就介绍到这了,更多相关React 前端路由内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号