本文介绍如何使用history插件管理浏览记录

  1. history插件的使用

    history这个插件可以方便管理你的浏览记录
    cnpm install history --save
    import createHistory from 'history/createBrowserHistory'
  2. 三种方法

    有三种使用方式
    createBrowserHistory 现代浏览器使用
    createBrowserHistory({
    basename: '', // 基链接
    forceRefresh: false, // 是否强制刷新整个页面
    keyLength: 6, // location.key的长度
    getUserConfirmation: (message,callback) => callback(window.confirm(message)) // 跳转拦截函数
    })
    createMemoryHistory 手机端使用
    createMemoryHistory({
    initialEntries: ['/'], // 初始载入路径,和MemoryRouter中的initialEntries是一样的
    initialIndex: 0, // initialEntries初始载入索引
    keyLength: 6, // location.key的长度
    getUserConfirmation: null // 路由跳转拦截函数
    })
    createHashHistory 老版本浏览器使用,暂不介绍
  3. 基本使用功能

    const history = createHistory(); 创建历史对象
    const location = history.location; 获取location对象
    const unlisten = history.listen( (location, action) => {
    console.log(location,action)
    // location是location对象
    // action是动作名称,比如 "PUSH"
    } )
    history.push('/a', { some: 'state' }) // 强制跳转
    unlisten() // 监听解绑
  4. history对象

    属性:
    上面三种方法创建的history对象都有如下三个属性
    history.length 历史记录的条数
    history.location 历史记录中的location对象
    history.action 当前的历史记录是通过什么动作添加进来的,如 "PUSH"
    createMemoryHistory中提供了额外的两个属性
    history.index 当前历史记录的索引
    history.entries 历史记录
    方法
    listen方法
    history.listen( (location,action) => {
    console.log(location,action);
    // location就是window.location的一个子集
    // action可能的值,"PUSH", "REPLACE", "POP"
    } )
  5. 使用history实现跳转

    push
    使用push可以将一条新的历史记录推送到历史堆栈中
    history.push('/a');
    history.push('/a',{name: 'yejiawei'});
    history.push({
    pathname: '/a',
    state: {
    name: 'yejiawei'
    }
    });
    replace方法和push方法使用形式一样,replace的作用是取代当前历史记录
    go,此方法用来前进或者倒退,history.go(-1);
    goBack,此方法用来回退,history.goBack();
    goForward,此方法用来前进,history.goForward();
    另外使用createMemoryHistory创建的history对象,有canGo方法,和go方法类似
  6. 使用history实现路由跳转警告

    const unblock = history.block('Do you want to leave?');
    上面这个用法,就是添加一个跳转提示信息,默认使用dom环境的window.confirm,所以如果使用非dom环境的createMemoryHistory就要使用getUserConfirmation方法实现
    另外,除了传递一个字符串提示信息以外,还可以添加函数
    const unblock = history.block( (location,action) => {
    return 'do you leave?'
    } )
    可以通过直接调用,unblock(); 实现方法解绑

管理react路由的history对象的插件history的使用介绍的更多相关文章

  1. 《JAVASCRIPT高级程序设计》window/location/navigator/screen/history对象

    如果要在web中使用JAVASCRIPT,那么BOM(浏览器对象模型)毫无疑问是最重要的部分.BOM提供了很多对象,例如,window.location.navigator.screen.histor ...

  2. javascript深入之location对象和history对象

    浏览器的location 和history对象: 一.location对象: 1>location.reload() 相当于按浏览器上的“刷新”(IE)或“Reload”(Netscape)键. ...

  3. javascript History对象属性和方法

    History对象 History对象包含用户(在浏览器窗口中)访问过的URL length: 返回浏览器历史列表中的URL数量(打开浏览器,访问淘宝,返回1,再访问百度,返回2) History对象 ...

  4. 浅谈history对象以及路由插件原理

    简介 History对象最初设计用来表示窗口的浏览历史,但是,出于隐私方面的原因,History对象不再允许脚本访问已经访问过的实际URL.虽然,我们不清楚历史URL,但是,我们可以通过History ...

  5. 深入学习 History 对象管理浏览器会话历史

    History对象允许我们操作浏览器会话历史,即加载当前页面的标签页窗口或frame窗口的访问历史.之前有同学咨询我如何实现拦截用户跳转页面并强制用户返回首页后重新请求页面,于是有了本篇博客的主题,本 ...

  6. 七天接手react项目 系列 —— react 路由

    其他章节请看: 七天接手react项目 系列 react 路由 本篇首先讲解路由原理,接着以一个基础路由示例为起点讲述路由最基础的知识,然后讲解嵌套路由.路由传参,最后讲解路由组件和一般组件的区别,以 ...

  7. react 路由使用react-router-dom

    react 和vue一样都是使用封装history 来进行页面跳转,下面就来说一下react常用的路由插件react-router-dom这个东西在GitHub上 目前是最受欢迎的 首相还是先下载 n ...

  8. vue 和 react 路由跳转和传参

                      react  1 .跳转方式加传参 this.props.history.push({ //地址 pathname: '/film/Details', //路由传参 ...

  9. react 路由 react-router@3.2.1

    react路由,4.x的差异还是比较大,暂时还是3.x的版本 安装: npm install -S react-router@3.x 配置: import { Router, Route, hashH ...

随机推荐

  1. .on事件绑定多少次就会执行多少次

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

  2. 阿里云服务器windows server2008r2+tomcat8.0+nginx1.12

    弄了两天的nginx,从了解开始,可能是我理解能力太差了,惭愧惭愧!但是还好看了一些大神的文章总算有点眉目了,此篇用来当作自己的笔记,大家看不懂,勿喷,但是如果有问题,直接回复,我可以给你解答一下,前 ...

  3. Announcing the Release of ASP.NET MVC 5.1, ASP.NET Web API 2.1 and ASP.NET Web Pages 3.1 for VS2012

    The NuGet packages for ASP.NET MVC 5.1, ASP.NET Web API 2.1 and ASP.NET Web Pages 3.1 are now live o ...

  4. MRC与ARC混合编程的编译器标记

    如果是MRC项目创建ARC源文件,给这个源文件加上 -fobjc-arc 的编译器标记, 如果是ARC项目创建MRC源文件,给这个源文件加上 -fno-objc-arc 的编译器标记. 步骤: 1. ...

  5. VS2015问题

  6. LeetCode OJ:Count and Say(数数)

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  7. 服务器端使用DeferredResult异步推送技术

    注意1: org.springframework.web.context.request.async.DeferredResult; 是Spring4.0以后的版本才有的,注意Spring版本,然后添 ...

  8. XML DOM - Range 对象

    Range对象 Range对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域.   dom标准Range对象 在IE中使用TextRange对象 range对象常用的建立方法在开发中 ...

  9. python list的extend和append方法

    append: Appends object at the end. x = [1, 2, 3] x.append([4, 5]) print (x) gives you: [1, 2, 3, [4, ...

  10. 不带缓存IO和标准(带缓存)IO

    linux对IO文件的操作分为: 不带缓存:open read.posix标准,在用户空间没有缓冲,在内核空间还是进行了缓存的.数据-----内核缓存区----磁盘 假设内核缓存区长度为100字节,你 ...