在Shiny的标签集中,有没有办法跟踪用户从导航的哪个标签面板才能进入当前面板?我几乎处于为每个面板使用计数器变量来跟踪访问频率的阶段,但是想知道是否有更优雅的解决方案。
答案 0 :(得分:0)
执行此操作的一种可能方法是使用reactiveValues
存储当前和上一个标签input
ID。这样做的最小示例应用程序如下所示。该应用程序跟踪并打印出当前选定和以前选择的选项卡。
library(shiny)
ui = shinyUI(
fluidPage(
tabsetPanel(id = 'selected_tab',
tabPanel('1','1'),
tabPanel('2','2'),
tabPanel('3','3')
),#tabsetPanel
"current tab:",
verbatimTextOutput('current_tab'),
"previous tab:",
verbatimTextOutput('last_tab')
)#fPage
)#shinyUi
server = shinyServer(function(input, output, session) {
#init reactive value storage
rv = reactiveValues()
#trigger event on tab selection change
observeEvent(input$selected_tab, {
#store old current tab as last tab reactive value
rv$last_tab = rv$current_tab
#store new current tab as cur tab reactive value
rv$current_tab = input$selected_tab
})
output$current_tab = renderPrint(rv$current_tab)
output$last_tab = renderPrint(rv$last_tab)
})#shinyserver
shinyApp(ui, server)