【发布时间】:2017-06-05 07:11:02
【问题描述】:
我想为 someobserveEvent 调用一个特定的反应式表达式,并为其他 observeEvent 隔离它。下面我有我想要实现的最少代码(我的实际应用程序包含许多 observeEventcalling 反应式表达式)。
library(shiny)
ui <- fluidPage(
numericInput("Num1", "First number:", 0),
numericInput("Num2", "Second number:", 0),
textOutput("Answer"),
actionButton("Button_1", "Call reactive"),
actionButton("Button_2", "Don't Call reactive")
)
server <- function(input, output){
Ans <- reactive({
a <-input$Num1 + input$Num2
a
})
observeEvent(input$Button_1, {
output$Answer <- renderText({Ans()})
})
observeEvent(input$Button_2, {
output$Answer <- renderText({isolate(Ans())})
})
}
shinyApp(ui = ui, server = server)
在上面的应用程序中,我有两个actionButtonsButton_1(呼叫反应)和Button_2(不呼叫反应)。正如标签为第一个按钮 (Button_1) 建议的那样,我希望每次单击按钮时都调用响应式表达式,但对于第二个按钮 (Button_2),我希望不调用响应式表达式(即使输入变化)。为了防止Button_2 表单调用反应式表达式,我添加了isolate,但这并不妨碍调用反应式表达式。
有没有什么方法可以在输入发生变化时隔离反应式表达式?
【问题讨论】:
-
我不清楚单击
Button_2时会发生什么。如果你只是不需要看到新的值,为什么不把这行代码注释掉呢? -
@amatsuo_net 在我的实际应用程序中我使用了两个
observeEvent,第一个是绘制绘图,第二个是缩放现有绘图。因此,对于缩放按钮,我不希望再次计算反应表达式。在这里,我只是想让示例尽可能地少。也许我应该编辑我的代码,以便清楚为什么我需要两个observeEvent,一个重新计算反应表达式,一个不重新计算。
标签: r reactive-programming shiny