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 ...
随机推荐
- ASP.NET MVC4 Web项目中使用Log4Net记录日志到文件和数据库。
下载与.netframework版本向对应的log4net.dll ,然后添加引用.下载地址:http://logging.apache.org/log4net/download_log4net.cg ...
- python导入第三方库
2.Python的库一般包含两个方面:第三方库和标准库 3.Python的time标准库主要包含三个方面的内容:(1)时间处理函数(2)时间格式化(3)程序计时 4.turtle画笔运动函数的功能是进 ...
- day6 作业 购物车
- layer 点击yes后在回调函数里获取layer.open({})iframe里面元素
参考:http://fly.layui.com/jie/19690/ yes: function(index, layero) { uid.value = $(layero).find('iframe ...
- java学习-循环结构-查找算法-顺序查找
今天回顾了简单算法,顺序查找.发现了数组出现重复数字,无法输出第二个位置就跳出循环了. 利用所学知识解决了.放上代码,同时在代码里给大家分享思路. 欢迎大神教导,欢迎指正. ; System.out. ...
- javascript if else优化指南
不管是平时在学习js中还是在项目书中写js代码,都避免不了一个问题就是有时候要做大量的分支判断,很多人的第一反应就是使用if else.无可厚非,if else早平时做分支判断的时候是非常好用的,但是 ...
- LeetCode347:返回频率前K高的元素,基于优先队列实现
package com.lt.datastructure.MaxHeap; import java.util.LinkedList; import java.util.List; import jav ...
- python-python基础1(变量、判断、循环、模块、数据运算)
一.变量 name=input("name:") age=input("age:") job=input("job:") info=''' ...
- JMeter学习-图形化 HTML 报表概要说明
JMeter 3.0开始支持动态生成图形化 HTML dashboard报告,当前生成报告有一下两种方式: 1.脚本测试执行结束后,即生成HTML测试报告 2.通过之前生成的测试结果,生成HTML测试 ...
- Bar Chart _Study
---恢复内容开始--- 以“3D BarChart”为例. 1.Select a theme.(选择一个主题模板) 2.Set up categories and groups.(设置类型和组) 3 ...