Reactjs之实现js跳转路由
1、新增知识
- /*
- 实现js跳转路由:https://reacttraining.com/react-router/web/example/auth-workflow
- 1、要引入Redirect
- import { BrowserRouter as Router,Route,Link,Redirect, withRouter
- } from "react-router-dom";
- 2、定义一个flag
- this.state = {
- loginFlag:false
- };
- 3、render里面判断flag 来决定是否跳转
- if(this.state.loginFlag){
- return <Redirect to={{ pathname: "/" }} />;
- }
- 4、要执行js跳转
- 通过js改变loginFlag的状态
- 改变以后从新render 就可以通过Redirect自己来跳转
- */
2、代码实现案例
- import React, { Component } from 'react';
- import {Redirect} from "react-router-dom";
- class Login extends Component {
- constructor(props) {
- super(props);
- this.state = {
- loginFlag:false
- };
- }
- doLogin=(e)=>{
- e.preventDefault();//防止跳转
- let username=this.refs.username.value;
- let password=this.refs.password.value;
- console.log(username,password)
- if(username=='admin' && password==''){
- //登录成功 跳转到首页
- this.setState({
- loginFlag:true
- })
- }else{
- alert('登录失败')
- }
- }
- render() {
- if(this.state.loginFlag){
- // return <Redirect to={{ pathname: "/" }} />;
- return <Redirect to='/' />;
- }
- return (
- <div>
- <br /> <br /> <br />
- <form onSubmit={this.doLogin}>
- <input type="text" ref="username" /> <br /> <br />
- <input type="password" ref="password" /> <br /> <br />
- <input type="submit" value="执行登录"/>
- </form>
- </div>
- );
- }
- }
- export default Login;
3、嵌套路由知识点
- return <Route key={key} path={route.path}
- render={props => (
- // pass the sub-routes down to keep nesting
- <route.component {...props} routes={route.routes} />
- )}
- />
4、嵌套路由案例,App.js
- import React, { Component } from 'react';
- import { BrowserRouter as Router, Route, Link } from "react-router-dom";
- import './assets/css/index.css';
- import routes from './model/router.js';
- class App extends Component {
- render() {
- return (
- <Router>
- <div>
- <header className="title">
- <Link to="/">首页组件</Link>
- <Link to="/user">用户页面</Link>
- <Link to="/shop">商户</Link>
- <Link to="/news">新闻</Link>
- </header>
- {
- routes.map((route,key)=>{
- if(route.exact){
- return <Route key={key} exact path={route.path}
- // route.component value.component <User {...props} routes={route.routes} />
- render={props => (
- // pass the sub-routes down to keep nesting
- <route.component {...props} routes={route.routes} />
- )}
- />
- }else{
- return <Route key={key} path={route.path}
- render={props => (
- // pass the sub-routes down to keep nesting
- <route.component {...props} routes={route.routes} />
- )}
- />
- }
- })
- }
- </div>
- </Router>
- );
- }
- }
- export default App;
5、router.js文件
- let routes = [
- {
- path: "/",
- component: Home,
- exact:true
- },
- {
- path: "/shop",
- component: Shop
- },
- {
- path: "/user",
- component: User,
- routes:[ /*嵌套路由*/
- {
- path: "/user/",
- component: UserList
- },
- {
- path: "/user/add",
- component: UserAdd
- },
- {
- path: "/user/edit",
- component: UserEdit
- }
- ]
- },
- {
- path: "/news",
- component: News
- }
- ];
- export default routes;
Reactjs之实现js跳转路由的更多相关文章
- 十六、React 渲染数据注意事项、以及react-router4.x中使用js跳转路由(登录成功自动跳转首页)
一.React加载数据流程回顾 先看上一节的产品详情代码:https://blog.csdn.net/u010132177/article/details/103184176 [Pcontent.js ...
- 4.JS跳转路由/刷新/返回页面
1.JS跳转路由(需要拿到父组件的history) clickHandle(){ let history = this.props.history; history.push( '/home') } ...
- React之js实现跳转路由
1.新增知识 /* 实现js跳转路由:https://reacttraining.com/react-router/web/example/auth-workflow 1.要引入Redirect im ...
- Vue 编程式导航(通过js跳转页面)以及路由hash模式和history模式
第一种方法: this.$router.push({path:'shopcontent?aid=3'} 第二种方法 this.$router.push({name:'news'}} 通过在ma ...
- 试着用React写项目-利用react-router解决跳转路由等问题(三)
转载请注明出处:王亟亟的大牛之路 本来想一下子把路由的接下来的内容都写完的,但是今天白天开了会,传了些代码打了个包,就被耽搁了 这一篇来讲一下 IndexLink和 onlyActiveOnIndex ...
- 使用Js控制ReactRouter路由
[使用Js控制ReactRouter路由] 首先引入PropTypes: const PropTypes = require('prop-types'); 然后定义context的router属性: ...
- vue.js编程式路由导航 --- 由浅入深
编程式路由导航 实例中定义一个方法,这个方法绑定在标签上 然后就设置路由跳转 语法 this.$router.history.push('要跳转路由的地址') <!DOCTYPE html> ...
- react-router5.x 的配置及其页面跳转方法和js跳转方法
https://blog.csdn.net/sinat_37255207/article/details/90745207 上次用react-router 的时候 还是3.x 很久不用 已经到rea ...
- vue使用vue-router beforEach实现判断用户登录跳转路由筛选
vue使用vue-router beforEach实现判断用户登录跳转路由筛选 :https://www.colabug.com/3306814.html 在开发webApp的时候,考虑到用户体验,经 ...
随机推荐
- SpringMVC基础02——HelloWorld
1.搭建环境 博主使用的环境是IDEA2017.3,首先我们需要创建一个maven项目父项目,创建一个project,选择maven,之后点击next 添写当前项目的坐标,之后点击next 填写项目名 ...
- zencart目录结构
zencart目录结构 文件路径 注释 index.php 主文件 includes/templates/[custom template folder]/common/html_header.php ...
- PHP的函数获取图片的宽高等信息
PHP的函数getimagesize可以得到图片的宽高等信息 array getimagesize ( string $filename [, array &$imageinfo ] ) ...
- google的CacheBuilder缓存
适用性: 计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存. 常用用法: LoadingCache<Key, Graph> graphs = Cac ...
- Python核心技术与实战——二十|Python的垃圾回收机制
今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构.图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器.随着寄存器.异失性存储器(内存)和永久性存储器(硬盘)的出现, ...
- C++内存泄漏的几种情况
1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存:二是在类的构造函数中动态的分配了 ...
- JZOJ5373【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
题目 分析 我们发现,如果[l,r]的异或和为k是真要求,有且仅当不存在[l,i]和[i,r]两个区间的异或和不为k. 我们用带权并查集了维护这些,但是,由于区间不连续,我们将点权移到边上,对于区间[ ...
- i3wm
1.音量调节(alsa-utils) alsamixer: alsamixer is a graphical mixer program for the Advanced Linux Sound Ar ...
- echarts 添加自定义label标签
1.echarts 自定义标签 注:当设置visualMap的后,给覆盖regions单独定义的值(如果data 中没有regions的地区 则无妨,我这个是从data中删除'青岛',但是lable ...
- chomre 控制台断点调试
在上图蓝色圆圈中数字,它们分别代表: 1.停止断点调试 2.不跳入函数中去,继续执行下一行代码(F10) 3.跳入函数中去(F11) 4.从执行的函数中跳出 5.禁用所有的断点,不做任何调试 6.程序 ...