shiny - 在 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)
解决方案
请测试以下内容:
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()
所以我将其省略了,但您可以将其重新添加。
推荐阅读
- json - 当用户在 Angular 中输入 ng2-smart-table 字段列时如何验证 JSON 格式?
- unit-testing - 是否可以更改类接口以提高可测试性
- azure - 使用 VS Code 连接到 TFS
- python - 在 Python Flask 的背景中拟合模型
- discord.net - Discord.net 是否有类似语音聊天中的成员数之类的功能?
- composer-php - 为什么 Composer 不将软件包更新为补丁版本?
- reactjs - 将参数添加到 MUI Google Maps Autocomplete
- python - 有没有一种有效的方法来找到最接近 DataFrame 子集的匹配项?
- pyspark - Pyspark 流处理每个触发器 1 条记录
- odoo-14 - 日历视图中的 Odoo14 重复任务