mirror of
https://github.com/metosin/reitit.git
synced 2025-12-18 17:01:11 +00:00
Fix #600: Add frontend function to update query-params for current path
This commit is contained in:
parent
fc12af4ea8
commit
dd724f0d0e
2 changed files with 23 additions and 1 deletions
|
|
@ -88,3 +88,14 @@
|
||||||
match)
|
match)
|
||||||
(do (js/console.warn "missing route" name)
|
(do (js/console.warn "missing route" name)
|
||||||
nil))))
|
nil))))
|
||||||
|
|
||||||
|
(defn update-path-query-params
|
||||||
|
"Given Reitit-frontend path, update the query params
|
||||||
|
with given function and arguments.
|
||||||
|
|
||||||
|
NOTE: coercion is not applied to the query params"
|
||||||
|
[path f & args]
|
||||||
|
(let [^goog.Uri uri (Uri/parse path)
|
||||||
|
new-query (apply f (query-params uri) args)]
|
||||||
|
(.setQueryData uri (QueryData/createFromMap (clj->js new-query)))
|
||||||
|
(.toString uri)))
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
"Easy wrapper over reitit.frontend.history,
|
"Easy wrapper over reitit.frontend.history,
|
||||||
handling the state. Only one router can be active
|
handling the state. Only one router can be active
|
||||||
at a time."
|
at a time."
|
||||||
(:require [reitit.frontend.history :as rfh]))
|
(:require [reitit.frontend.history :as rfh]
|
||||||
|
[reitit.frontend :as rf]))
|
||||||
|
|
||||||
(defonce history (atom nil))
|
(defonce history (atom nil))
|
||||||
|
|
||||||
|
|
@ -101,3 +102,13 @@
|
||||||
(rfh/replace-state @history name path-params nil))
|
(rfh/replace-state @history name path-params nil))
|
||||||
([name path-params query-params]
|
([name path-params query-params]
|
||||||
(rfh/replace-state @history name path-params query-params)))
|
(rfh/replace-state @history name path-params query-params)))
|
||||||
|
|
||||||
|
(defn update-query
|
||||||
|
"Takes the current location and updates the query params
|
||||||
|
with given fn and arguments."
|
||||||
|
[f & args]
|
||||||
|
;; TODO: rfh version?
|
||||||
|
(let [current-path (rfh/-get-path @history)
|
||||||
|
new-path (apply rf/update-path-query-params current-path f args)]
|
||||||
|
(.pushState js/window.history nil "" new-path)
|
||||||
|
(rfh/-on-navigate @history new-path)))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue