1、新增知识

  1. /*
  2. 实现js跳转路由:https://reacttraining.com/react-router/web/example/auth-workflow
  3. 1、要引入Redirect
  4. import { BrowserRouter as Router,Route,Link,Redirect, withRouter
  5. } from "react-router-dom";
  6.  
  7. 2、定义一个flag
  8. this.state = {
  9. loginFlag:false
  10. };
  11.  
  12. 3、render里面判断flag 来决定是否跳转
  13. if(this.state.loginFlag){
  14. return <Redirect to={{ pathname: "/" }} />;
  15. }
  16.  
  17. 4、要执行js跳转
  18. 通过js改变loginFlag的状态
  19. 改变以后从新render 就可以通过Redirect自己来跳转
  20. */

2、代码实现案例

  1. import React, { Component } from 'react';
  2. import {Redirect} from "react-router-dom";
  3. class Login extends Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. loginFlag:false
  8. };
  9. }
  10.  
  11. doLogin=(e)=>{
  12. e.preventDefault();//防止跳转
  13. let username=this.refs.username.value;
  14. let password=this.refs.password.value;
  15. console.log(username,password)
  16. if(username=='admin' && password==''){
  17. //登录成功 跳转到首页
  18. this.setState({
  19. loginFlag:true
  20. })
  21. }else{
  22. alert('登录失败')
  23. }
  24. }
  25.  
  26. render() {
  27. if(this.state.loginFlag){
  28. // return <Redirect to={{ pathname: "/" }} />;
  29. return <Redirect to='/' />;
  30. }
  31. return (
  32. <div>
  33. <br /> <br /> <br />
  34. <form onSubmit={this.doLogin}>
  35. <input type="text" ref="username" /> <br /> <br />
  36. <input type="password" ref="password" /> <br /> <br />
  37. <input type="submit" value="执行登录"/>
  38. </form>
  39. </div>
  40. );
  41. }
  42. }
  43. export default Login;

3、嵌套路由知识点

  1. return <Route key={key} path={route.path}
  2. render={props => (
  3. // pass the sub-routes down to keep nesting
  4. <route.component {...props} routes={route.routes} />
  5. )}
  6. />

4、嵌套路由案例,App.js

  1. import React, { Component } from 'react';
  2. import { BrowserRouter as Router, Route, Link } from "react-router-dom";
  3. import './assets/css/index.css';
  4. import routes from './model/router.js';
  5. class App extends Component {
  6. render() {
  7. return (
  8. <Router>
  9. <div>
  10. <header className="title">
  11. <Link to="/">首页组件</Link>
  12. <Link to="/user">用户页面</Link>
  13. <Link to="/shop">商户</Link>
  14. <Link to="/news">新闻</Link>
  15. </header>
  16. {
  17. routes.map((route,key)=>{
  18. if(route.exact){
  19. return <Route key={key} exact path={route.path}
  20. // route.component value.component <User {...props} routes={route.routes} />
  21. render={props => (
  22. // pass the sub-routes down to keep nesting
  23. <route.component {...props} routes={route.routes} />
  24. )}
  25. />
  26. }else{
  27. return <Route key={key} path={route.path}
  28. render={props => (
  29. // pass the sub-routes down to keep nesting
  30. <route.component {...props} routes={route.routes} />
  31. )}
  32. />
  33. }
  34. })
  35. }
  36. </div>
  37. </Router>
  38. );
  39. }
  40. }
  41.  
  42. export default App;

5、router.js文件

  1. let routes = [
  2. {
  3. path: "/",
  4. component: Home,
  5. exact:true
  6. },
  7. {
  8. path: "/shop",
  9. component: Shop
  10. },
  11. {
  12. path: "/user",
  13. component: User,
  14. routes:[ /*嵌套路由*/
  15. {
  16. path: "/user/",
  17. component: UserList
  18. },
  19. {
  20. path: "/user/add",
  21. component: UserAdd
  22. },
  23. {
  24. path: "/user/edit",
  25. component: UserEdit
  26. }
  27. ]
  28. },
  29. {
  30. path: "/news",
  31. component: News
  32. }
  33. ];
  34.  
  35. export default routes;

Reactjs之实现js跳转路由的更多相关文章

  1. 十六、React 渲染数据注意事项、以及react-router4.x中使用js跳转路由(登录成功自动跳转首页)

    一.React加载数据流程回顾 先看上一节的产品详情代码:https://blog.csdn.net/u010132177/article/details/103184176 [Pcontent.js ...

  2. 4.JS跳转路由/刷新/返回页面

    1.JS跳转路由(需要拿到父组件的history) clickHandle(){ let history = this.props.history; history.push( '/home') } ...

  3. React之js实现跳转路由

    1.新增知识 /* 实现js跳转路由:https://reacttraining.com/react-router/web/example/auth-workflow 1.要引入Redirect im ...

  4. Vue 编程式导航(通过js跳转页面)以及路由hash模式和history模式

    第一种方法: this.$router.push({path:'shopcontent?aid=3'}   第二种方法   this.$router.push({name:'news'}} 通过在ma ...

  5. 试着用React写项目-利用react-router解决跳转路由等问题(三)

    转载请注明出处:王亟亟的大牛之路 本来想一下子把路由的接下来的内容都写完的,但是今天白天开了会,传了些代码打了个包,就被耽搁了 这一篇来讲一下 IndexLink和 onlyActiveOnIndex ...

  6. 使用Js控制ReactRouter路由

    [使用Js控制ReactRouter路由] 首先引入PropTypes: const PropTypes = require('prop-types'); 然后定义context的router属性: ...

  7. vue.js编程式路由导航 --- 由浅入深

    编程式路由导航 实例中定义一个方法,这个方法绑定在标签上 然后就设置路由跳转 语法 this.$router.history.push('要跳转路由的地址') <!DOCTYPE html> ...

  8. react-router5.x 的配置及其页面跳转方法和js跳转方法

    https://blog.csdn.net/sinat_37255207/article/details/90745207 上次用react-router 的时候  还是3.x 很久不用 已经到rea ...

  9. vue使用vue-router beforEach实现判断用户登录跳转路由筛选

    vue使用vue-router beforEach实现判断用户登录跳转路由筛选 :https://www.colabug.com/3306814.html 在开发webApp的时候,考虑到用户体验,经 ...

随机推荐

  1. SpringMVC基础02——HelloWorld

    1.搭建环境 博主使用的环境是IDEA2017.3,首先我们需要创建一个maven项目父项目,创建一个project,选择maven,之后点击next 添写当前项目的坐标,之后点击next 填写项目名 ...

  2. zencart目录结构

    zencart目录结构 文件路径 注释 index.php 主文件 includes/templates/[custom template folder]/common/html_header.php ...

  3. PHP的函数获取图片的宽高等信息

    PHP的函数getimagesize可以得到图片的宽高等信息 array getimagesize ( string $filename [, array &$imageinfo ] )   ...

  4. google的CacheBuilder缓存

    适用性: 计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存. 常用用法: LoadingCache<Key, Graph> graphs = Cac ...

  5. Python核心技术与实战——二十|Python的垃圾回收机制

    今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构.图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器.随着寄存器.异失性存储器(内存)和永久性存储器(硬盘)的出现, ...

  6. C++内存泄漏的几种情况

    1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存:二是在类的构造函数中动态的分配了 ...

  7. JZOJ5373【NOIP2017提高A组模拟9.17】信仰是为了虚无之人

    题目 分析 我们发现,如果[l,r]的异或和为k是真要求,有且仅当不存在[l,i]和[i,r]两个区间的异或和不为k. 我们用带权并查集了维护这些,但是,由于区间不连续,我们将点权移到边上,对于区间[ ...

  8. i3wm

    1.音量调节(alsa-utils) alsamixer: alsamixer is a graphical mixer program for the Advanced Linux Sound Ar ...

  9. echarts 添加自定义label标签

    1.echarts 自定义标签 注:当设置visualMap的后,给覆盖regions单独定义的值(如果data 中没有regions的地区 则无妨,我这个是从data中删除'青岛',但是lable ...

  10. chomre 控制台断点调试

    在上图蓝色圆圈中数字,它们分别代表: 1.停止断点调试 2.不跳入函数中去,继续执行下一行代码(F10) 3.跳入函数中去(F11) 4.从执行的函数中跳出 5.禁用所有的断点,不做任何调试 6.程序 ...