【发布时间】:2018-02-02 22:40:22
【问题描述】:
在 Shiny 的标签集中,是否有任何方法可以跟踪用户从 导航到哪个标签面板以到达当前面板?我几乎处于为每个面板使用计数器变量来跟踪它被访问的频率的阶段,但我想知道是否有更优雅的解决方案。
【问题讨论】:
在 Shiny 的标签集中,是否有任何方法可以跟踪用户从 导航到哪个标签面板以到达当前面板?我几乎处于为每个面板使用计数器变量来跟踪它被访问的频率的阶段,但我想知道是否有更优雅的解决方案。
【问题讨论】:
一种可能的方法是使用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)
【讨论】: