首页 > 解决方案 > 暂停闪亮会话并返回前端 UI

问题描述

当用户单击提交按钮时,是否有任何解决方案可以返回到应用程序的当前状态。如果不满足一个条件,则应用显示信息并返回初始 UI。

观察事件(输入$sub,{

if (input$test == TRUE) {
  shinyalert("You made error", type = "error")
  stop () #need back initial state before click button stop() stops app completely
}

}

标签: rshiny

解决方案


您可以使用library(shinyjs)重置会话。这是您提供的示例observeEvent

library(shiny)
library(shinyalert)
library(shinyjs)

jsResetCode <- "shinyjs.reset = function() {history.go(0)}"

ui <- fluidPage(
  useShinyalert(),
  useShinyjs(),
  extendShinyjs(text = jsResetCode),

   titlePanel("Old Faithful Geyser Data"),

   sidebarLayout(
      sidebarPanel(
        actionButton("sub","sub"),
        checkboxInput("test", "test"),
         sliderInput("bins",
                     "Number of bins:",
                     min = 1,
                     max = 50,
                     value = 30)
      ),

      mainPanel(
         plotOutput("distPlot")
      )
   )
)

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

  observeEvent(input$sub, {
    if(input$test == TRUE){
      shinyalert("You made error", type = "error")
    }
  })

  observeEvent(input$shinyalert, {
    if(input$shinyalert == TRUE){
      js$reset()
    }
  })

   output$distPlot <- renderPlot({
      x    <- faithful[, 2] 
      bins <- seq(min(x), max(x), length.out = input$bins + 1)
      hist(x, breaks = bins, col = 'darkgray', border = 'white')
   })
}

shinyApp(ui = ui, server = server)

推荐阅读