test.R

library(shiny)
library(shinyRouter)

ui <- shinyRouter::routerUI("router")

loginPage <- fluidPage(
  titlePanel("LOGIN"),
  actionButton("home", "HOME")
)

dynamicPage <- fluidPage(
  verbatimTextOutput("param"),
  actionButton("home", "HOME")
)

mainPage <- navbarPage("HOME",
                       tabPanel("one", actionButton("dynamic", "DYNAMIC")),
                       tabPanel("two", actionButton("login", "LOGIN")))

server <- function(input, output, session) {

  router <- callModule(routerModule, "router",
    route("/login", loginPage),
    route("^/(a|b)$", dynamicPage),
    route("/", mainPage)
  )

  output$param <- renderText({
    p <- router$params()
    p[[1]]
  })

  observeEvent(input$home, {
    router$push("/")
  })

  observeEvent(input$dynamic, {
    if (runif(1) > 0.5) {
      router$push("/a")
    } else {
      router$push("/b")
    }
  })

  observeEvent(input$login, {
    router$push("/login")
  })
}

shinyApp(ui, server, uiPattern = ".*")
shunsambongi/shinyRouter documentation built on Nov. 5, 2019, 8:54 a.m.