React 学习笔记(2) 路由和UI组件使用
安装依赖导入
// cnpm install react-router-dom -S
// 或
// yarn add react-router-dom
// index.js
import React from 'react'
import ReactDOM from 'react-dom' import App from "@/App" ReactDOM.render(<div>
<App></App>
</div>, document.getElementById('app'))
App.jsx
// App.jsx
import React from "react"
// HashRouter 表示一个路由的根容器,将来所有的路由相关的东西,都要包裹在 HashRouter 里,而且,一个网站中只使用一次
// Route 表示一个路由规则,在 Route 上有2个比较重要的属性, path 和 component
// Link 表示一个路由的链接,好比 vue 中的 <router-link to=""></router-link>
import { HashRouter, Route, Link, Redirect } from 'react-router-dom' // 使用 antd UI
import { DatePicker } from 'antd' import Home from "@/conpenents/route/Home"
import Movie from "@/conpenents/route/Movie"
import About from "@/conpenents/route/About" class App extends React.Component {
constructor(props) {
super(props)
this.state = {
msg: '这是 BindThis组件中的 msg 消息'
}
}
render() {
// 启用路由
// HashRouter中,只能有唯一的根元素
// 一个网站中,只需要使用唯一的一次 <HashRouter>
return <HashRouter>
<div>
<h1>这是 App 根组件 </h1>
<DatePicker />
<hr/>
<Redirect to="/home" />
<Link to="/home">首页</Link>
<Link to="/movie/top250/102">电影</Link>
<Link to="/about">关于</Link>
<hr/>
{/* 路由规则 */}
<Route path="/home" component={ Home }></Route>
{/* 路由参数匹配 */}
{/* 获取路由参数:this.props.match.params */}
<Route path="/movie/:type/:id" component={ Movie } exact ></Route>
<Route path="/about" component={ About }></Route>
{this.props.children}
</div>
</HashRouter>
} } export default App
Home.jsx
// Home.jsx
import React from "react" class Home extends React.Component {
constructor(props) {
super(props)
this.state = {
msg: '这是 Home 组件'
}
}
render() {
return <div>
<h1>{ this.state.msg }</h1>
</div>
} } export default Home
Movie.jsx
// Movie.jsx
import React from "react" class Movie extends React.Component {
constructor(props) {
super(props)
this.state = {
// 方便获取路由参数
routeParams: props.match.params,
msg: '这是 Movie 组件'
}
}
render() {
console.log(this)
console.log(this.props.match.params)
return <div>
<h1>{ this.state.msg }</h1>
<p>{ this.state.routeParams.type } - { this.state.routeParams.id }</p>
</div>
} } export default Movie
About.jsx
// About.jsx
import React from "react" class About extends React.Component {
constructor(props) {
super(props)
this.state = {
msg: '这是 About 组件'
}
}
render() {
return <div>
<h1>{ this.state.msg }</h1>
</div>
} } export default About
注意:按需导入antd,需要配置.babelrc:按需加载

React 学习笔记(2) 路由和UI组件使用的更多相关文章
- iOS(Swift)学习笔记之SnapKit+自定义UI组件
本文为原创文章,转载请标明出处 1. 通过CocoaPods安装SnapKit platform :ios, '10.0' target '<Your Target Name>' do u ...
- React学习笔记(一)- 入门笔记
React入门指南 作者:狐狸家的鱼 本文链接:React学习笔记 GitHub:sueRimn 1.组件内部状态state的修改 修改组件的每个状态,组件的render()方法都会再次运行.这样就可 ...
- React学习笔记 - 组件&Props
React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...
- amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown
amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown 一.总结 1.am-dropdown(及其孩子):控制下拉列表的样式 2.data-am-dropdown(及其孩子):控 ...
- 【React】react学习笔记02-面向组件编程
react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件 a.轻量组件-函 ...
- react学习笔记1--基础知识
什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...
- React学习笔记(五)State&声明周期
React学习笔记(五) 四.State&声明周期 可以为组件添加"状态(state)".状态与属性相似,但是状态是私有的,完全受控于当前组件. 局部状态就是只能用于类(定 ...
- vue2.0学习笔记之路由(二)路由嵌套+动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue2.0学习笔记之路由(二)路由嵌套
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- React学习笔记(七)条件渲染
React学习笔记(七) 六.条件渲染 使用if或条件运算符来创建表示当前状态的元素. 可以使用变量来存储元素.比如: let button = null; if (isLoggedIn) { but ...
随机推荐
- pytorch梯度下降法讲解(非常详细)
pytorch随机梯度下降法1.梯度.偏微分以及梯度的区别和联系(1)导数是指一元函数对于自变量求导得到的数值,它是一个标量,反映了函数的变化趋势:(2)偏微分是多元函数对各个自变量求导得到的,它反映 ...
- 【SqlServer】利用sql语句附加,分离数据库-----转载
利用sqlserver内置的存储过程sp_attach_db和sp_detach_db附加 exec sp_attach_db @dbname=N'数据库名',@filename1=N'.mdf的文件 ...
- jqgrid 合并表头
参考:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:groupingheadar jQuery("#表格id").jqGri ...
- 通过python 构建一个简单的聊天服务器
构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...
- Codeforces 598D:Igor In the Museum
D. Igor In the Museum time limit per test 1 second memory limit per test 256 megabytes input standar ...
- 如何给Sqlite添加复合主键
如果是想两个字段组成一个复合主键的话可以如下.SQL code sqlite> create table t2 ( ...> id1 int , ...> id2 int, ...& ...
- struts2--action请求与Action类
1.action:代表一个sturts2的请求: 2.Action类:能够处理Struts2请求的类: --属性名必须遵守与JavaBean属性名相同的命名规则: --属性的类型可以使任意类型.从字符 ...
- 渗透测试神器Burp Suite v1.7.11发布(含下载)
BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了Proxy,Spider,Scanner,Intruder,Repeater,Sequenc ...
- JSTL1.0和JSTL1.1的区别
这要从一个异常说起 According to TLD or attribute directive in tag file, attribute value does not accept any e ...
- 多元线性回归算法python实现(非常经典)
对于多元线性回归算法,它对于数据集具有较好的可解释性,我们可以对比不过特征参数的输出系数的大小来判断它对数据的影响权重,进而对其中隐含的参数进行扩展和收集,提高整体训练数据的准确性.整体实现代码如下所 ...