react路由
来源:互联网 发布:网站源码打包下载 编辑:程序博客网 时间:2024/05/16 07:05
1、我们把前面Home组件改动一下,用来展示新闻列表
import React from 'react';import axios from "axios";export default class Home extends React.Component{ // 构造 constructor(props) { super(props); // 初始状态 this.state = { news:[] // 用来保存新闻数据 }; } componentWillMount() { axios .get("http://localhost/news.php") .then((response)=>{ this.setState({ news:response.data, }) }) } render(){ return <div> <h2>新闻排行</h2> { this.state.news.map((item)=>{ return <div> <a href="#">{item.title}</a> <p>{item.desc}</p> </div> }) } </div> }}
2、接下来我们要实现 点击 新闻标题,跳转到详细页面。
准备新闻详细页组件
detail.js:
import React from 'react';export default class About extends React.Component{ render(){ return <div> <h2>新闻详细页面</h2> <p>xxxxx</p> <p>xxxxx</p> <p>xxxxx</p> <p>xxxxx</p> </div> }}
3、新闻列表页的跳转连接
我们的Home组件(现在是新闻组件),还是如下连接:
<a href="#">{item.title}</a>
我们要换成react路由中的Link
标签。
所以在home.js里:
#首选要// 引入路由import { BrowserRouter as Router, Route, Link} from 'react-router-dom';
然后修改成:
<Link to={"/about/"+item.id}>{item.title}</Link>
注意to
里的值,最后我们要http://localhost:9000/about/101
这样路径。
4、还需要配置路由
router-demo.js里:
<Route path="/about/:newsid" component={Detail}/>
这个路由就是 加载我们的 新闻详细页组件(detail.js)
是我们想要的效果。
5、在新闻详情页里 获取新闻ID
detail.js:
import React from 'react';export default class About extends React.Component{ render(){ return <div> <h2>新闻详细页面 <span>ID:{this.props.match.params.newsid}</span></h2> <p>xxxxx</p> <p>xxxxx</p> <p>xxxxx</p> <p>xxxxx</p> </div> }}
我们使用组件的方式开发,可以用this.props.match.params.xxx
来获取路由上的参数。
获取到id,我们可以在这个组件里,发送ajax获取服务端的新闻详细数据(这个过程我们省略了)。
6、一个需要交代的知识点。
看我们的router-demo.js代码:
import React from 'react';// 引入路由import { BrowserRouter as Router, Route, Link} from 'react-router-dom';//引入组件import Home from "./home";import About from "./about"import Help from "./help"import Detail from "./detail"export default class RouterDemo extends React.Component{ render(){ return <Router> <div> <ul> <li><Link to="/">Home</Link></li> <li><Link to="/about">About</Link></li> <li><Link to="/help">Help</Link></li> </ul> <hr/> <Route exact path="/" component={Home}/> <Route path="/about" component={About}/> <Route path="/help" component={Help}/> <Route path="/about/:newsid" component={Detail}/> </div> </Router> }}
注意Route
标签。
看到没有?同时显示了about和detail的页面内容。
这是为什么呢?
<Route exact path="/" component={Home}/> <Route path="/about" component={About}/> <Route path="/help" component={Help}/> <Route path="/about/:newsid" component={Detail}/>
看路由配置,/about/:newsid
其实是包含/about
的。
要解决这个问题(不要显示about的页面内容),只需:
<Route exact path="/about" component={About}/>
加一个exact
属性(像/根路由那样)
阅读全文
0 0
- React路由
- React路由
- react路由
- React路由
- React-router路由实践
- React-router路由实践
- react-router路由
- react路由学习网站
- React-Router4x 路由
- 20、react之 路由
- React-router路由实践
- react-router 路由匹配
- react-router 路由
- react路由配置
- React学习(六):路由
- react默认路由嵌套子路由
- (二)创建react-router路由
- 从 React Router 谈谈路由
- hdu 6070 Dirt Ratio二分 线段树
- MyBatis学习总结(一)——MyBatis快速入门
- 1082 与7无关的数
- 介绍了如何取成员函数的地址以及调用该地址
- JAVASCRIPT面向对象编程(一)
- react路由
- sizeof() 、strlen()、str.length的区分
- 包装类的equals和==
- python-numpy的基本用法01
- Servlet的线程安全问题
- 设计模式之单例模式
- JSONObject处理Date类型 java.sql.Date 转化java.util.Date 问题
- Computer Networking——network layer QA
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(四)——直接对二进制进行fuzzing