安装依赖导入

// 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>&nbsp;
<Link to="/movie/top250/102">电影</Link>&nbsp;
<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组件使用的更多相关文章

  1. iOS(Swift)学习笔记之SnapKit+自定义UI组件

    本文为原创文章,转载请标明出处 1. 通过CocoaPods安装SnapKit platform :ios, '10.0' target '<Your Target Name>' do u ...

  2. React学习笔记(一)- 入门笔记

    React入门指南 作者:狐狸家的鱼 本文链接:React学习笔记 GitHub:sueRimn 1.组件内部状态state的修改 修改组件的每个状态,组件的render()方法都会再次运行.这样就可 ...

  3. React学习笔记 - 组件&Props

    React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...

  4. amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown

    amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown 一.总结 1.am-dropdown(及其孩子):控制下拉列表的样式 2.data-am-dropdown(及其孩子):控 ...

  5. 【React】react学习笔记02-面向组件编程

    react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件   a.轻量组件-函 ...

  6. react学习笔记1--基础知识

    什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...

  7. React学习笔记(五)State&声明周期

    React学习笔记(五) 四.State&声明周期 可以为组件添加"状态(state)".状态与属性相似,但是状态是私有的,完全受控于当前组件. 局部状态就是只能用于类(定 ...

  8. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. React学习笔记(七)条件渲染

    React学习笔记(七) 六.条件渲染 使用if或条件运算符来创建表示当前状态的元素. 可以使用变量来存储元素.比如: let button = null; if (isLoggedIn) { but ...

随机推荐

  1. Abstract Data Type

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:上下文类

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. 【剑指Offer面试编程题】题目1514:数值的整数次方---九度OJ

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例. 对于每个输入文件,第一行输入一个整数T, ...

  4. onchange VS onblur

    参考:https://zhidao.baidu.com/question/559052179.html

  5. VUE框架下安装自带http协议

    在控制台CMD 中输入 npm install vue-resource --save-dev

  6. SpringBoot 入门demo

    创建SpringBoot项目方式一 (1)新建maven项目,不使用骨架. 使用maven管理依赖就行了,不必使用骨架(模板). (2)在pom.xml中添加 <!--springboot核心. ...

  7. 二十四 Redis消息订阅&事务&持久化

    Redis数据类型: Redis控制5种数据类型:String,list,hash,set,sorted-set 添加数据,删除数据,获取数据,查看有多少个元素,判断元素是否存在 key通用操作 JR ...

  8. metasploit扫描

    实验目的: 一.  基于TCP协议收集主机信息 二.  基于SNMP协议收集主机信息 三.  基于SMB协议收集信息 四.  基于SSH协议收集信息 五.  基于FTP协议收集信息     实验环境: ...

  9. P1090 危险品装箱

    1090 危险品装箱 (25分)   集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你 ...

  10. Ubuntu下安装 Mysql

    MYSQL在ubuntu16.04下的编译安装mysql-5.6.23.tar.gz 为减少安装过程中因权限带来个各种问题,建议全程用root用户编译安装,步骤如下: 1.安装依赖文件  apt-ge ...