首页 > 解决方案 > 在 R Shiny 中推送重置时如何清除“隔离”变量

问题描述

我在 StackOverflow 上看到了以下代码。当您在 X 和 Y 中输入值时,将计算总和,并显示消息“X + Y =”。但是,当您重置时,“X + Y =”消息仍然出现在前面的示例中。请问如何清除该消息?

这是代码:

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

解决方案


请测试以下内容:

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) {

    values <- reactiveValues()


    output$sum <- renderText({
        req(values$calc_text)
    })

    observeEvent(input$calc, {
        values$calc_text <- paste("X + Y =", input$x + input$y)
    })

    observeEvent(input$reset, {
        reset("form")
        values$calc_text <- ''
    })
}

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

我不确定您为什么需要它,isolate()所以我将其省略了,但您可以将其重新添加。


推荐阅读