使用重置按钮重置并清除闪亮的文本输出

Reset and clear out Shiny text output using reset button

我正在创建一个计算器,它接受多个输入并在单击 'Calculate' 后打印计算结果。我还提供了一个重置​​按钮,可以成功地将输入值重置为默认值。

重置按钮还应该清除之前打印的输出(基本上我希望它看起来和你第一次打开应用程序时一模一样)。

下面是计算器的一个简化但仍然有效的示例。

library(shiny)
library(shinyjs)


ui <- fluidPage(
  useShinyjs(),
  div(id="form",
  sidebarLayout(
    sidebarPanel(
      numericInput("x","X",0),
      numericInput("y","Y",0)
    ),
    mainPanel(
      br(),
      column(width=6,actionButton("calc", "Calculate")),
      column(width=6,actionButton("reset", "Reset")), 
      br(),br(),br(),
      textOutput("sum"))
  )
))


# Define the server logic
server <- function(input, output) {
  output$sum <- renderText({
    req(input$calc)
    isolate(paste("X + Y =", input$x + input$y))
  })

  observeEvent(input$reset, {
    reset("form")
      })
}

# Run the application
shinyApp(ui = ui, server = server)

我已经尝试了这里提供的一些方法来解决其他看似相似的问题,但我没有设法让它们起作用。我会提供一些我所做的例子,但此时我已经忘记了它们,我希望只有一些我忽略的明显、简单的答案。不过,我对 Shiny 还很陌生,所以如果能详细说明为什么可能的答案有效,我们也将不胜感激!

根据评论编辑。

我认为最简单的观察者是:

# two observers
server <- function(input, output) {

  observeEvent(input$calc, {
    output$sum <- renderText({
      req(input$calc)
      isolate(paste("X + Y =", input$x + input$y))
    })
  })


  observeEvent(input$reset, {
    output$sum <- renderText({

    })
  })
}