一,实现效果

二,实现过程

1,这篇文章的前四步:

https://blog.csdn.net/weixin_42349568/article/details/116567355

2,引入react-router-dom

npm install --save react-router-dom

3,使用路由

import React from 'react'
import ReactDOM from 'react-dom'
import { HashRouter, Switch, Route } from 'react-router-dom'
import Shici from './pages/shici/shici.jsx'
import Login from './pages/login/login.jsx'
import Home from './pages/home/home.jsx'ReactDOM.render(<div><div></div><HashRouter><Switch><Route path="/404" component={Shici}></Route><Route path="/login" component={Login}></Route><Route component={Home}></Route></Switch></HashRouter></div>,document.getElementById('root')
)

并且新建了三个页面组件:

4,登陆页面

import React from 'react'
import { createForm } from 'rc-form';
import BasicInputExample from '../../components/inputItem/inputItem'
import {Button} from 'antd-mobile'
import './login.less'
import imgUrl from './logo.jpg'
const BasicInputExampleWrapper = createForm()(BasicInputExample);
export default class Xiaohua extends React.Component{render(){return (<div><div className="imgBox"><img src={imgUrl} alt=""/></div><BasicInputExampleWrapper></BasicInputExampleWrapper><div className="btnBox"><Button type="ghost" className="myBtn">注册</Button><Button type="primary" className="myBtn" onClick={() => this.props.history.push({pathname:'/home'})}>登陆</Button></div></div>)}
}
1,因为this.props.history存在(调用login组件时给了path属性),所以跳转到home页面可以使用this.props.history.push({pathname:'/home'})
2,图片的引入,不能像html中那样写,而是应该使用变量方式写了。
3,样式的修改,可以直接添加类名,然后引入less文件来完成

5,首页的书写

import React from 'react'
import Tabbar from '../../components/tabbar/tabbar'
export default class Meitu extends React.Component{render(){return (<div><Tabbar></Tabbar></div>)}
}

利用的是antd-mobile的组件修改来的:

import React from 'react'
import { TabBar } from 'antd-mobile'
import {NavLink} from 'react-router-dom'
import './tabbar.less'export default class TabBarExample extends React.Component {constructor(props) {super(props)this.state = {selectedTab: 'redTab',hidden: false,fullScreen: true,}}renderContent(pageText) {switch (pageText) {case 'Life':return (<div style={{ backgroundColor: 'white', height: '100%', textAlign: 'center' }}><div style={{ paddingTop: 50 }}>生活界面内容</div></div>);case 'Koubei':return (<div style={{ backgroundColor: 'white', height: '100%', textAlign: 'center' }}><div style={{ paddingTop: 50 }}>口碑界面内容</div></div>);case 'Friend':return (<div style={{ backgroundColor: 'white', height: '100%', textAlign: 'center' }}><div style={{ paddingTop: 50 }}>朋友界面内容</div></div>);case 'My':return (<div style={{ backgroundColor: 'white', height: '100%', textAlign: 'center' }}><div style={{ paddingTop: 50 }}><NavLink exact to="/login" className='goBack' activeStyle={{fontWeight: 'bold'}}>退出登陆</NavLink></div></div>);default:break}}render() {return (<div style={this.state.fullScreen ? { position: 'fixed', height: '100%', width: '100%', top: 0 } : { height: 400 }}><TabBar unselectedTintColor="#949494" tintColor="#33A3F4" barTintColor="white" hidden={this.state.hidden}><TabBar.Itemtitle="life"key="Life"icon={<divstyle={{ width: '22px',height: '22px',background:'url(https://zos.alipayobjects.com/rmsportal/sifuoDUQdAFKAVcFGROC.svg) center center /  21px 21px no-repeat',}}/>}selectedIcon={<divstyle={{width: '22px',height: '22px',background:'url(https://zos.alipayobjects.com/rmsportal/iSrlOTqrKddqbOmlvUfq.svg) center center /  21px 21px no-repeat',}}/>}selected={this.state.selectedTab === 'blueTab'}badge={2}onPress={() => {this.setState({selectedTab: 'blueTab',})}}data-seed="logId">{this.renderContent('Life')}</TabBar.Item><TabBar.Itemicon={<divstyle={{width: '22px',height: '22px',background:'url(https://gw.alipayobjects.com/zos/rmsportal/BTSsmHkPsQSPTktcXyTV.svg) center center /  21px 21px no-repeat',}}/>}selectedIcon={<divstyle={{width: '22px',height: '22px',background:'url(https://gw.alipayobjects.com/zos/rmsportal/ekLecvKBnRazVLXbWOnE.svg) center center /  21px 21px no-repeat',}}/>}title="Koubei"key="Koubei"badge={23}selected={this.state.selectedTab === 'redTab'}onPress={() => {this.setState({selectedTab: 'redTab',})}}data-seed="logId1">{this.renderContent('Koubei')}</TabBar.Item><TabBar.Itemicon={<divstyle={{width: '22px',height: '22px',background:'url(https://zos.alipayobjects.com/rmsportal/psUFoAMjkCcjqtUCNPxB.svg) center center /  21px 21px no-repeat',}}/>}selectedIcon={<divstyle={{width: '22px',height: '22px',background:'url(https://zos.alipayobjects.com/rmsportal/IIRLrXXrFAhXVdhMWgUI.svg) center center /  21px 21px no-repeat',}}/>}title="Friend"key="Friend"dotselected={this.state.selectedTab === 'greenTab'}onPress={() => {this.setState({selectedTab: 'greenTab',})}}>{this.renderContent('Friend')}</TabBar.Item><TabBar.Itemicon={{ uri: 'https://zos.alipayobjects.com/rmsportal/asJMfBrNqpMMlVpeInPQ.svg' }}selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/gjpzzcrPMkhfEqgbYvmN.svg' }}title="My"key="my"selected={this.state.selectedTab === 'yellowTab'}onPress={() => {this.setState({selectedTab: 'yellowTab',})}}>{this.renderContent('My')}</TabBar.Item></TabBar></div>)}
}
1,这时候跳转路由的实现就是使用:
<NavLink exact to="/login" className='goBack' activeStyle={{fontWeight: 'bold'}}>退出登陆</NavLink></div>

三,项目地址

https://gitee.com/ling-xu/react-spa

react-spa小demo相关推荐

  1. 使用 React 开发小程序

    作者 | 边柳 原文 | https://www.yuque.com/seeconf/2020/qsytho 为什么要用 React 开发小程序 大家知道微信小程序在商业上取得了非常大的成功,正是因为 ...

  2. React 转小程序现状

    (点击上方公众号,可快速关注) 作者:司徒正美 zhuanlan.zhihu.com/p/41144332 现在做React转小程序,一个是taro,一个是anujs. anujs的React小程序一 ...

  3. 前端面试题(HTML、JS、Vue、React、小程序)

    前端面试题 HTML && CSS HTML 1.Div 里面有个一个div ***** Q:有几种方法可以水平,垂直居中 2.doctype的作用 * 3.link标签和import ...

  4. mess-cli的一个小DEMO,微服务脚手架的实践!

    介绍 mess-cli是一个基于single-spa进行封装了的微服务脚手架,它为你提供了react.vue项目的single-spa模板 不了解mess-cli的,可以参考mess-cli官网,或者 ...

  5. React.js 小书 Lesson12 - state vs props

    React.js 小书 Lesson12 - state vs props 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson12 转载请注 ...

  6. React.js 小书 Lesson14 - 实战分析:评论功能(一)

    React.js 小书 Lesson14 - 实战分析:评论功能(一) 本文作者:胡子大哈 本文原文:http://react.huziketang.com/blog/lesson14 转载请注明出处 ...

  7. React.js 小书 Lesson27 - 实战分析:评论功能(六)

    React.js 小书 Lesson27 - 实战分析:评论功能(六) 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson27 转载请注明出 ...

  8. 金融新手投标模块布局小Demo

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

  9. android jsoup简书,jsoup爬虫简书首页数据做个小Demo

    昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固,比如java反射注解,知道一点就是说不出来,很尴尬... 生命不止,学习不止啊 之前那个项目 Q ...

  10. React.js 小书 Lesson5 - React.js 基本环境安装

    React.js 小书 Lesson5 - React.js 基本环境安装 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson5 转载请注明 ...

最新文章

  1. 腾讯云linux服务器怎么使用图形化界面_自己搭建一个自动签到和远程下载的服务器...
  2. Thymeleaf循环遍历
  3. 【转】Android 最火的快速开发框架XUtils
  4. 看完这篇你就明白,为什么说大部分企业建设数据中台都会失败?
  5. python中datetime默认的1990年改为_如何更改numpy datetime64中的年份值?
  6. 虚拟机 Debian 11 安装moodle3.11
  7. 服务器2012r2安装虚拟,Windows2012R2创建Hyper-v虚拟化群集
  8. 微信小程序自定义组件——手写radio
  9. 如何把PDF中A4页面拆分成两张A5来打印
  10. HDU 2022 海选女主角
  11. Google新的搜索页面
  12. PHP是什么,能做什么,为什么用PHP
  13. 移动硬盘制作随身系统
  14. MyBatis中小于号“<“的使用
  15. xamarin textview 滚动_划重点 | 不能不知的滚动轴承知识—轴承分类
  16. pmsm仿真 matlab 转子转角波形,MATLAB/SIMULINK的永磁同步电机矢量控制系统仿真研究...
  17. 苏宁智慧零售2018: 大象轻舞,一动千钧 | 一点财经
  18. 软件工程课程团队项目——团队日志
  19. Microsoft Data Access Components(MDAC) version 2.6 or later
  20. 161206 ANFIS 自适应模糊神经网络

热门文章

  1. DNSObserver检测DNS安全漏洞
  2. 复旦nlp实验室 nlp-beginner 任务三:基于注意力机制的文本匹配
  3. mysql queries 很大,mysql优化通常使用的几种方法
  4. set vue 修改整个对象值_Vue修改对象或数据,页面没有相应更改
  5. linux edi esi eax 汇编指令,汇编指令lodsb和stosb、lodsd和stosd
  6. oracle服务器cpu 100,Oracle数据库服务器CPU一直100%怎么处理-sql优化方面
  7. 恢复系统管理员密码的五大奇招
  8. 浅谈Java两种并发类型——计算密集型与IO密集型
  9. HTTP协议详解(经典)
  10. Linux下Mongodb安装和启动配置