安装依赖导入

// 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. Write-up-NODE-1

    关于 下载地址:点我 哔哩哔哩:哔哩哔哩 一天研究OBS终于不闪屏了 顺便在这里记录一下,上网查了很久.刚刚开始是不闪屏了,但是锁屏后就唤醒不了了,只能强制关机. 然后又上网找了很久,重启了N次,终于 ...

  2. eclispe javaw.exe in your current path的解决方法

    https://blog.csdn.net/bd2569/article/details/70576666 问题背景:解压缩下面文件夹后打开eclipse软件(是安装包,解压即可使用的那种)弹出“.. ...

  3. php 人员权限管理(RBAC)

    一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户的功能是不一样的,先来考虑一下数据库怎么设计 肯定要有用户表.还有用户所用的角色.然后就是权限功能表:可是在这里面有关联也就 ...

  4. Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda

    Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...

  5. 十四 Spring的AOP的基于AspectJ的注解开发

    Spring的AOP的基于AspectJ的注解开发 创建项目,引入jar包 编写目标类.切面类 配置目标类.切面类 在注解文件里开启AOP的开发 <?xml version="1.0& ...

  6. Ajax请求回调地狱及解决方案(promise、async和await)

    谈及回调地狱发生得情况和解决办法,就必须追溯到原生ajax请求. 先列出服务器提供的数据接口: // 服务器端接口 app.get('/data1', (req, res) => { res.s ...

  7. Intend之Date的几个功能

    封装为一个方法 1.跳转到拨号页面 //跳转到拨号页面的方法 protected void takeCall(String info){ Intent intent=new Intent(); int ...

  8. VOC2012数据集提取自己需要的类的图片和对应的xml标签

    根据需要修改路径和自己需要的类即可. import os import os.path import shutil fileDir_ann = r'/home/somnus/tttt/VOC2012/ ...

  9. PHP 获取header 的自定义参数值

    $.ajax({ type: "GET", url: "default.aspx", beforeSend: function(request) { reque ...

  10. 前端学习笔记系列一:8 <noscript>…</noscript>,网站路径,vscode跳出右括号

    1.<noscript>…</noscript> 在body中使用此段代码,可识别 <script> 标签但无法支持其中的脚本的浏览器. 此段代码意思为如果浏览器不 ...