【发布时间】:2015-09-11 08:53:36
【问题描述】:
我正在修改 observeEvent 中的反应值。我有另一个 observe 块,它调用这个反应值。鉴于这种反应值依赖性,我希望observe 块在observeEvent 块的末尾被触发,但这似乎没有发生。这是预期的行为吗?
http://shiny.rstudio.com/reference/shiny/latest/reactiveValues.html 说 - “当您从中读取一个值时,调用响应式表达式会对该值进行响应式依赖,并且当您写入它时,它会通知任何依赖于该值的响应式函数。”
在下面的示例中,每次单击按钮时,我都希望输出带有 2 的 cat,并且根据 counter 的值,也会输出带有 3 的 cat。情况并非如此,输出通常会打印带有 1 的 cat,而不是带有 2 和 3 的 cats。
server.r
shinyServer (
function(input, output, session) {
lReactiveValues = reactiveValues(a = 1.1)
voidaA = observeEvent(
input$buttonCommit,
{
a = runif(1)
cat(a,' 1\t')
lReactiveValues$a = a
}
)
voidB = observe({
counter = runif(1)
cat(counter,' 2\t');
if (counter > 0.5) {
cat('\n')
cat(lReactiveValues$a,' 3\n')
}
}
)
}
)
ui.r
dashboardPage(
dashboardHeader(
title = "Analytics"
),
## Sidebar content
dashboardSidebar(
menuItem("Analysis", tabName = "tabAnalysis", icon = icon("calculator"))
),
## Body content
dashboardBody(
tabItems(
tabItem(
tabName = "tabAnalysis",
actionButton("buttonCommit", "Commit!")
)
)
#, style='width: 100%; height: 100%;'
)
)
【问题讨论】: