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 ...
随机推荐
- URL构成及各个协议默认端口
url的构成:一般来说,http请求都会和URL地址有关,对于url来说一般由下面5个部分构成 .协议:通常就是第一个冒号之前的内容常见协议:http,https(http+ssl),ftp,ssh, ...
- monkey常见API及实例
一.API简介 LaunchActivity(pkg_name, cl_name):启动应用的Activity.参数:包名和启动的Activity. Tap(x, y, tapDuration): 模 ...
- QQ企业通---登录模块设计--知识点
Rectangle 成员 存储一组整数,共四个,表示一个矩形的位置和大小.对于更高级的区域函数,请使用 Region 对象. Form与Control的区别? 窗体也是控件,继承Control类.可 ...
- user模块User表
user模块User表 创建user模块 前提:在 luffy 虚拟环境下 1.终端从项目根目录进入apps目录 >: cd luffyapi & cd apps 2.创建app > ...
- updatexml()报错注入
首先了解下updatexml()函数 UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为X ...
- 《C Primer Plus(第6版)(中文版)》普拉达(作者)epub+mobi+azw3
内容简介 <C Primer Plus(第6版)中文版>详细讲解了C语言的基本概念和编程技巧. <C Primer Plus(第6版)中文版>共17章.第1.2章介绍了C语言编 ...
- MyEclipse Hibernate逆向工程的使用
简介MyEclipse自带很多非常实用的工具,本次将介绍Hibernate工具的使用.1.首先打开MyEclipse的Hibernate视图 2.然后在左上角的DB Browser视图中,右键,新建数 ...
- SciPy 图像处理
章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...
- AC自动机 (模板)
AC自动机是用来干什么的: AC自动机是用来解决多模匹配问题,例如有单词s1,s2,s3,s4,s5,s6,问:在文本串ss中有几个单词出现过,类似. AC自动机实现这个功能需要三个部分: 1.将所有 ...
- 阿里云安装mysql,初始化密码修改
阿里云服务器,centos7, rpm包安装MySQL,初始化了个奇葩密码 登陆不上, 修改配置文件/etc/my.cnf,在[mysqld]下面添加一行代码:skip-grant-tables se ...