Works by sending a message up to
our reactive input binding on the clientside, which tells page.js to update
the window URL accordingly, then tells clientside shiny that our reactive
input binding has changed, then that comes back down to our router callback
function and all other observers watching get_page()
or similar.
change_page(page, session = shiny::getDefaultReactiveDomain(),
mode = "push")
The new URL to go to. Should just be the path component of the URL, with optional query, e.g. "/learner?id=%d"
The current Shiny session.
("replace" or "push") whether to replace current history or push a new one.
More in shiny::updateQueryString
.