npm 包 historie 使用教程

阅读时长 4 分钟读完

前言

在前端开发中,页面的路由管理是必不可少的一个环节。而 React 应用的路由管理就需要借助于一些第三方库来实现。其中,historie 库便是一个非常常用的路由管理工具。本篇文章将详细介绍如何使用 historie 库。

historie 简介

historic 是一个 JavaScript 库,用于管理您的 Web 应用程序的会话历史。它将不同的 JavaScript 环境与一致的 API 进行交互:在 DOM 环境中,它通过 HTML5 历史 API 提供一个统一的界面,在 Node.JS 环境中,它提供了与 Node.JS 和 Express 兼容的方式。它还支持诸如 React、React Native 和其它视图库等范式,因此您可以使用自己喜欢的方式构建想要的页面导航。

安装

historie 可以通过 npm 下载,安装很简单:

npm install history

使用 historie

创建 historie 对象

  1. 使用 createBrowserHistory() 来创建浏览器的 historie 对象

const history = createBrowserHistory()

  1. 或者使用 createMemoryHistory() 来创建内存的 historie 对象

const history = createMemoryHistory()

基本 API

  1. push(path, [state]):用于跳转到一个新的地址,可以传递一个 state 对象

history.push('/home', { name: 'john' })

  1. replace(path, [state]):与 push() 方法相似,但是不会添加新的页面历史记录。

history.replace('/home', { name: 'john' })

  1. go(n):在页面历史中向前或向后移动 n 步,类似于浏览器的前进和后退按钮。

history.go(-1)

  1. goBack():向后移动一步。

history.goBack()

  1. goForward():向前移动一步。

history.goForward()

  1. block(prompt):阻止跳转操作并提示用户。

history.block('确定要离开当前页面吗?')

常用属性

  1. location:表示当前 URL 的信息。

const pathname = history.location.pathname

  1. listen(listener):添加一个监听器。

history.listen((location, action) => { console.log(location.pathname) })

示例

下面是一个使用 historie 的示例:

-- -------------------- ---- -------
------ ----- ---- -------
------ - ------- ----- - ---- ------------------
------ - -------------------- - ---- ---------

----- ------- - ----------------------

----- --- - -- -- -
  ------- ------------------
    ------ -------- ---------------- --
    ------ ------------- ----------------- --
  ---------
-

----- ---- - -- -- -
  -----
    -------------
    ------- ----------- -- ---------------------- - ----- ------ ------ -- --------------
  ------
-

----- ----- - -- -------- -- -- -
  -----
    --------------
    ----------------------------
    ------- --------------------------- -------------
  ------
-

------ ------- ---

以上便是使用 historie 的基本教程,希望能帮助大家更好地管理页面路由。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055e8381e8991b448dbe1d

纠错
反馈