需要一种方法来立即重新加载会话,而无需在Shiny中完成代码序列

我使用闪亮的包来构建一个工具的Web版本.在提供输出之前,必须对用户输入执行验证.其中一个验证需要刷新工具.

为了完成这项工作,我尝试在名为“显示结果”的操作按钮中使用“session $reload”.

会话$reload在反应按钮中工作得非常好,我需要一种方法来重置会话而不完成代码序列.

工作会话重新加载

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

        { #Test Door Identification Server

          #Refresh button
          observeEvent(input$refresh, {
            session$reload()
          })

会话$code需要立即重置的代码段

    library(shiny)

ui <- fluidPage(

  actionButton('switchtab',"Click this"),
  textOutput('code_ran')

)

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

  observeEvent(input$switchtab,{
    aggg_result = -1
    if(aggg_result == -1)
    {
      session$reload()
      print("session reload not working")
    }

    print("Code running this line")

    output$code_ran <- renderText("code Ran this line without refreshing")

  })

}

  shinyApp(ui = ui, server = server)

输出此功能:
打印“重新加载不起作用”并继续其余的语句.

我理解这是会话$reload如何工作,但有没有办法重置而不打印“代码运行此行”?

任何方向/建议将是最受欢迎的.

问候,
Vevek S.

最佳答案 好的,如果在会话$reload()之后简单地做一个return()呢?

library(shiny)

ui <- fluidPage(

  actionButton('switchtab',"Click this"),
  textOutput('code_ran')

)

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

  print("Initializing")

  observeEvent(input$switchtab,{
    aggg_result = -1
    if(aggg_result == -1)
    {
      session$reload()
      return()
      print("session reload not working")
    }

    print("Code running this line")

    output$code_ran <- renderText("code Ran this line without refreshing")

  })

}
shinyApp(ui = ui, server = server)

它完成了你想要的,对吧?

点赞