【发布时间】:2019-06-30 19:24:07
【问题描述】:
是否有可能在不触发反应器的情况下更新输入?
下面我举一个最小的例子。目的是在不更改主面板中的值的情况下更新滑块。当滑块再次更改时,应再次将其转发给相关的反应器。
问题和底层用例类似于以下问题:R shiny - possible issue with update***Input and reactivity 和 Update SelectInput without trigger reactive?。与这些问题类似,在我的用例中有一个依赖于两个输入的反应式。我想根据另一个更新这些输入中的一个,这会导致反应被计算两次。但是,这两个问题都通过仅选择性地更新输入来解决问题。这在我的用例中是不可能的,因为我想通过更新输入来向用户显示一些信息。
如果没有可能在不触发响应式响应的情况下更新输入,我将针对我的用例提出后续问题。
示例
library(shiny)
ui <- fluidPage(
titlePanel("Update Slider - Isolate reaction?"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30),
actionButton("set1", "set slider 'bins'$value=20"),
actionButton("set2", "'ISOLATED' set slider 'bins'$value=20 ")
),
mainPanel(
textOutput("sliderValue")
)
)
)
# Define server logic
server <- function(input, output, session) {
output$sliderValue <- renderText(input$bins)
observeEvent(input$set1,{
updateSliderInput(session,"bins",value=20)
})
observeEvent(input$set2,{
## Is there any possibility to update the slider without 'sliderValue' changing?
#isolate does not work
isolate(
updateSliderInput(session,"bins",value=20 )
)
})
}
shinyApp(ui = ui, server = server)
【问题讨论】:
标签: r shiny reactive-programming