我想使用shiny.router
来创建一个使用navbarPage
和tabPanel
的闪亮应用程序的标签的可共享链接。
下面是一个不起作用的可重复示例:
library(shiny)
library(shiny.router)
page_1 <- tabPanel("Page 1", value = "page_1",
"This is Page 1")
page_2 <- tabPanel("Page 2", value = "page_2",
"This is Page 2")
router <- make_router(
route("/", page_1),
route("page2", page_2)
)
#+++++++++++++
# ui
#+++++++++++++
ui <- navbarPage("Dashboard", theme = shinytheme("flatly"),
router$ui
)
#+++++++++++++
# server
#+++++++++++++
server <- function(input, output, session)
{
router$server(input, output, session)
}
shinyApp(ui, server)
如果我在用户界面部分使用以下代码,它就可以正常工作:
#+++++++++++++
# ui
#+++++++++++++
ui <- navbarPage("Dashboard", theme = shinytheme("flatly"),
tabPanel(
tags$ul(
tags$li(a(href = route_link("/"), "Page 1")),
tags$li(a(href = route_link("page2"), "Page 2"))
),
router$ui
)
)
但是这并没有给我留下一个看起来合适的导航栏。有没有可能用navbarPage
和tabPanel
结构搭配shiny.router
?
2条答案
按热度按时间hc2pp10m1#
下面是我的答案here的一个稍微修改过的版本,它避免了使用
library(shiny.router)
。区别在于使用
shiny::updateNavbarPage
而不是shinydashboard::updateTabItems
:上面使用的是
clientData$url_hash
-同样可以使用clientData$url_search
,如我前面的答案所示。**编辑:**在
updateQueryString
中使用mode = "push"
进行浏览器导航:备选使用
clientData$url_search
和mode = "push"
:PS:使用shiny的bookmarking capabilities也可以恢复选中的标签,只要
navbarPage
附带id
。PPS:这里可以找到关于使用辅助导航的
navbarPage
的相关问题。xdnvmnnf2#
作为一种变通方法,我从shinytheme(“flatly”)源代码中提取了class标签,并将它们分别应用于ul()和a()。