React 小案例 路由跳转
在上篇的基础上做路由跳转:上篇
安装路由及代码:
安装:cnpm i -S react-router-dom
1.在pages里创建四个跳转页面
2.在src文件夹下创建router.js,router.js全部内容:
首先引入路由组件,
创建四个要跳转的<Route>标签,path是组建路径,component是组件名称
import React from 'react'
import {BrowserRouter,Route,Switch} from 'react-router-dom'
import Home from './pages/home'
import Category from './pages/category'
import Car from './pages/car'
import User from './pages/user'export default ()=>(<BrowserRouter><Switch><Route path='/home' component={Home}></Route><Route path='/category' component={Category}></Route><Route path='/car' component={Car}></Route><Route path='/user' component={User}></Route></Switch></BrowserRouter>
)复制代码
3.App.js全部内容:
首先引入routerMap,将RouterMap标签渲染在页面上
import React, { Component } from 'react';
import './App.css';
import './static/iconfont.css'
import RouterMap from './router'
class App extends Component {render() {return (<div className="App"><RouterMap/></div>);}
}export default App;
复制代码
4.将之前的Tabbar导航引入每个页面组件,目的让每个页面下面显示导航
import React,{Component} from 'react'
import Tabbar from '../components/tabbar'class Home extends Component{render(){return(<div><Tabbar/></div>)}
}export default Home复制代码
5.修改之前tabbar组件的内容,
首先引入Link,然后使用Link代替要跳转的div标签,
删去之前div的点击事件,因为Link标签渲染出来有a标签的效果,
修改数组,增加一条每个分页面url的数据,利用不同的url形成不同的点击,辨别去哪是高亮显示,
给Link加一个to={v.link},跳转至其他页面,
用const url = window.location.href; 获取当前页面的url
用加给路由 url.indexOf(v.link)>-1 监测当前url是否包含v.link中的地址 判定如果包含就给当前Link标签添加active类
import React,{Component} from 'react'
import {Link} from 'react-router-dom'
import './index.css'
const tarbarArr =[{img:'icon-home',text:'首页',link:'/home'},{img:'icon-fenlei',text:'分类',link:'/category'},{img:'icon-gouwuchekong',text:'购物车',link:'/car'},{img:'icon-yonghu',text:'我的',link:'/user'}
]
class Tabbar extends Component{constructor(props){super(props)this.state={index:0}}render(){const url = window.location.href;return(<div className="tabbar"><div className="tabbar-content">{tarbarArr.map((v,i)=>(<Link to={v.link} key={i} className={"tabbar-item"+(url.indexOf(v.link)>-1?' active':'')}><div className={"iconfont "+v.img}/><div>{v.text}</div></Link>))}</div></div>);}
}export default Tabbar;复制代码
最后效果
React 小案例 路由跳转相关推荐
- 微信小程序篇2 谈谈小程序路由跳转的方式有哪些
微信小程序路由跳转的方式有哪些? 1. wx.navigateTo() 保存当前页面,跳转到应用内的某个页面.可以传递参数 [有缓存]. 2. wx.redirectTo() 保存当前页面,重定向到应 ...
- 小程序路由跳转,如何直接回到首页
先看一下小程序的关于路由跳转的api //只能跳转到tabBar配置页面wx.switchTab({ url: '/pages/index/index',});//返回上一级页面(delta:返回的页 ...
- 微信小程序路由跳转详情
1.路由跳转 微信小程序的路由跳转 是通过两个栈堆实现的,这就导致了栈堆里最多储存十个页面,如果超过十个,会直接报错,所以要在必要的时候清空栈堆. wx.navigateTo:最常用的跳转,跳转到另一 ...
- 微信小程序路由跳转的方式总结
1. wx.navigateTo保留当前页面,跳转到应用内的某个页面.会将页面缓放在页面栈中,最多十个. 2. wx.redirectTo 关闭当前页面,跳转到应用内的某个页面,不会将当前页缓存在内存 ...
- 路由跳转时的页面状态保存
前言 我们在开发网页时,经常会遇到一种情况--在一个页面对页面初始状态进行了修改(如已请求到的数据.表单数据.滚动高度等等),跳转到另外一个页面之后再返回到原页面(路由回退),原页面需要保持原先的状态 ...
- 小程序路由(返回上一级页面)
项目场景: 小程序路由跳转问题 项目场景:点击分享链接,跳转至详情页:跳转详情页时需要判断当前用户有没有登录:没有登录跳转至登录页,登录后回到详情页(返回上一级页面) 问题描述 登录后不能返回详情页 ...
- 初学react实现路由跳转_如何使用React构建模因制作者:初学者指南
初学react实现路由跳转 by Avanthika Meenakshi 通过Avanthika Meenakshi 如何使用React构建模因制作者:初学者指南 (How to build a me ...
- 小程序服务器搭建前后端交互,微信小程序:request前后端交互 路由跳转 存储数据到本地和获取 小程序登入 授权...
一 request前后端交互 基本样式 wx.request({ url:'test.php', //仅为示例,并非真实的接口地址 data: { x:'', y:''}, header: {'con ...
- react实现路由跳转_react实现hash路由
众所周知,目前单页面使用的路由有两种实现方式: hash 模式 history 模式 hash 模式 路由原理: 我们先来看hash模式,页面首次加载时需要在load事件中解析初始的URL,从而展示进 ...
最新文章
- 不做“浮冰”,深挖AI技术和场景
- python安装pip-安装pip的三种方法
- neo4j 知识图谱_知识图谱里的知识存储:neo4j的介绍和使用
- linux 文档编辑器 word,linux下vi编辑器命令大全
- 生宣、熟宣、半生半熟宣纸各有什么特点?初学书法用哪种宣纸好?
- 抓取Js动态生成数据且以滚动页面方式分页的网页
- Matlab在高等数学中应用
- android activitygroup tab,android 之用ActivityGroup 实现Tab分页
- 利用pdfminer3k 使用python语言提取PDF中的文本
- AcWing 1123. 铲雪车 题解(欧拉回路)
- BZOJ 5477: 星际穿越
- 好玩的Python库tqdm
- 常见即时通讯:网易IM 、腾讯IM、环信IM、融云IM、leancloud IM介绍
- Excel生成随机32、36位ID
- 毕业一年的组长,刚去了阿里做Devops。年薪40W的offer
- Java物流项目第五天 数据聚合服务开发(pd-aggregation)
- 关于疫情,他瞎说了30句大实话(待补充)
- java基础笔记05~汪汪汪~
- android lottie字体json,从json文件到炫酷动画-Lottie实现思路和源码分析
- simcom2G模块使用
热门文章
- 无法远程xp服务器,五步快速处理在WinXP下IIS无法远程访问的问题
- [Java] 蓝桥杯 BASIC-1 基础练习 闰年判断
- [swift] LeetCode 234. Palindrome Linked List
- 第七届 蓝桥杯 省赛 第九题 交换瓶子
- in最多可以放多少?_新手开店,放多少商品才能获取最多流量?
- 服务器上Oracle System如何修改system用户密码
- angularjs过滤器(number)
- MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp
- 20050405:什么都要会啊
- 网络编程6_multiprocess模块.锁.队列