R闪亮刷新应用程序保持相同选项卡

R闪亮刷新应用程序保持相同选项卡,r,shiny,R,Shiny,我想让闪亮的应用程序记住在会话$reload()(刷新页面)时选择的选项卡,以清除所有输入,除了navbarPage()中选择的当前选项卡的值 我唯一想到的想法是,尽管我不知道如何实现这一点,但将一个全局变量tabIndicator指定为当前选定选项卡的值(如何获得该值?),然后在刷新时,rm()全局环境中除tabIndicator以外的所有变量,并在navbarPage()中设置selected=tabIndicator 我怎样才能做到这一点呢?我认为这是可行的,但很棘手。问题在于,sessi

我想让闪亮的应用程序记住在
会话$reload()
(刷新页面)时选择的选项卡,以清除所有输入,除了
navbarPage()
中选择的当前选项卡的值

我唯一想到的想法是,尽管我不知道如何实现这一点,但将一个全局变量
tabIndicator
指定为当前选定选项卡的值(如何获得该值?),然后在刷新时,
rm()
全局环境中除
tabIndicator
以外的所有变量,并在
navbarPage()
中设置
selected=tabIndicator


我怎样才能做到这一点呢?

我认为这是可行的,但很棘手。问题在于,
session$reload()
相当于点击浏览器中的刷新按钮,因此您正在创建一个新会话,并丢失所有上下文。我想你可以用cookies来做这件事,但我建议你使用
action按钮
,使用
updateWhatever
,重置所有输入,而不是实际执行
会话$reload()

你有两个选项,这两个选项都超出了Shining的基本功能

  • 你可以用饼干。每次输入新选项卡时,向javascript发送消息并设置cookie。当应用程序初始化时,检查cookie是否存在,如果设置了cookie,则读取其值并更改到相应的选项卡

  • 使用该软件包,它使您能够利用HTML5的本地存储(但这在较旧的浏览器上不起作用,因为HTML5相对较新)


  • 我现在没有时间提供完整的代码,但希望这能有所帮助,因为我能够使用全局变量来解决这个问题

    我将此代码放在我的应用程序顶部(在
    ui
    server
    之前)


    工作起来很有魅力。感谢所有人的帮助。

    请注意,这基本上就是记住上次关闭选项卡时选择了哪个选项卡。如果您希望此功能仅用于刷新,则可能需要分配另一个全局变量并进行更多If/else分支。此解决方案还意味着所有用户将共享同一选项卡。如果我转到你的应用并打开一个特定选项卡,那么你在2秒钟后转到你计算机上的应用,你将在我打开的选项卡上。我不知道这是否是你想要的行为,这通常不是你想要的行为。这是真的。就我而言,我的应用程序的所有用户都从他们自己的计算机上工作,这意味着这不是一个问题。但这一点很重要,因为这通常不是人们想要的行为,对其他人来说,这可能还不够好。然而,我对HTML5或使用cookies一无所知,所以这需要暂时解决。再次感谢。是否可以将
    操作按钮
    编程为不仅清除所有输入,还清除输出?例如,输出表对象?
    
    # Clear global environment except 'currentTab'
    rm(list=setdiff(ls(), 'currentTab'))
    
    # If current tab exists, restore to that tab. Otherwise, start at home screen
    if(!exists('currentTab')){
      currentTab <- 'HOMEPAGE'
    }
    
    # Current tab
    observe({
      currentTab <<- input$navbar
    })