Skip to main content

reitit.frontend.history

Provides integration to hash-change or HTML5 History events.

->FragmentHistory

(->FragmentHistory on-navigate router popstate-listener hashchange-listener last-fragment)

source

->Html5History

(->Html5History on-navigate router listen-key click-listen-key)

source

FragmentHistory

source

History

protocol

source

-get-path

(-get-path this)

Get the current routing path, including query string and fragment

protocol

-href

(-href this path)

Converts given routing path to browser location

protocol

-init

(-init this)

Create event listeners

protocol

-on-navigate

(-on-navigate this path)

Find a match for current routing path and call on-navigate callback

protocol

-stop

(-stop this)

Remove event listeners

protocol

Html5History

source

href

(href history name)
(href history name path-params)
(href history name path-params query-params)
(href history name path-params query-params fragment)

Generate a URL for a route defined by name, with given path-params and query-params.

The URL is formatted using Reitit frontend history handler, so using it with anchor element href will correctly trigger route change event.

Note: currently collections in query parameters are encoded as field-value pairs separated by &, i.e. "?a=1&a=2", if you want to encode them differently, convert the collections to strings first.

source

ignore-anchor-click?

(ignore-anchor-click? router e el uri)

Precicate to check if the anchor click event default action should be ignored. This logic will ignore the event if anchor href matches the route tree, and in this case the page location is updated using History API.

source

map->FragmentHistory

(map->FragmentHistory m)

source

map->Html5History

(map->Html5History m)

source

(navigate history name)
(navigate history name {:keys [path-params query-params fragment replace], :as opts})

Updates the browser location and either pushes new entry to the history stack or replaces the latest entry in the the history stack (controlled by replace option) using URL built from a route defined by name given parameters.

Will also trigger on-navigate callback on Reitit frontend History handler.

Note: currently collections in query-parameters are encoded as field-value pairs separated by &, i.e. "?a=1&a=2", if you want to encode them differently, convert the collections to strings first.

See also: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState

source

push-state

(push-state history name)
(push-state history name path-params)
(push-state history name path-params query-params)
(push-state history name path-params query-params fragment)

Updates the browser URL and pushes new entry to the history stack using a route defined by name, with given path-params and query-params.

Will also trigger on-navigate callback on Reitit frontend History handler.

Note: currently collections in query-parameters are encoded as field-value pairs separated by &, i.e. "?a=1&a=2", if you want to encode them differently, convert the collections to strings first.

See also: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState

source

replace-state

(replace-state history name)
(replace-state history name path-params)
(replace-state history name path-params query-params)
(replace-state history name path-params query-params fragment)

Updates the browser location and replaces latest entry in the history stack using URL built from a route defined by name, with given path-params and query-params.

Will also trigger on-navigate callback on Reitit frontend History handler.

Note: currently collections in query-parameters are encoded as field-value pairs separated by &, i.e. "?a=1&a=2", if you want to encode them differently, convert the collections to strings first.

See also: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState

source

set-query

(set-query history new-query-or-update-fn)
(set-query history new-query-or-update-fn {:keys [replace], :as opts})

Update query parameters for the current route.

New query params can be given as a map, or a function taking the old params and returning the new modified params.

Note: The query parameter values aren't coereced, so the update fn will see string values for all query params.

source

start!

(start! router on-navigate)
(start! router on-navigate {:keys [use-fragment], :or {use-fragment true}, :as opts})

This registers event listeners on HTML5 history and hashchange events.

Returns History object.

When using with development workflow like Figwheel, remember to remove listeners using stop! call before calling start! again.

Parameters:

  • router The Reitit router.

  • on-navigate Function to be called when route changes. Takes two parameters, ´match´ and ´history´ object.

    Options:

  • :use-fragment (default true) If true, onhashchange and location hash are used to store current route.

    Options (Html5History):

  • :ignore-anchor-click? Function (router, event, anchor element, uri) which will be called to check if the anchor click event should be ignored. To extend built-in check, you can call reitit.frontend.history/ignore-anchor-click? function, which will ignore clicks if the href matches route tree.

source

stop!

(stop! history)

Stops the given history handler, removing the event handlers.

source