我目前正在开发一个shiny 的应用程序,其中我有一个包含列表的reactive Value.我正在try 更新此列表的一部分,而不触发依赖它的其他事件.
在下面的示例中,我希望button_Aa
not to触发text_Ab
,同样button_Ab
not to触发text_Aa
.我试着使用isolate
,但没有成功.
我知道我可以为我的列表中的每个元素(例如,reactiveValues(A = 1, Aa = 1, Ab = 1)
)创建单独的react 值,但这种方法会带来一系列问题,特别是在试图删除它的一些元素时(参见here).因此,我想知道在这种情况下是否有解决办法.
library(shiny)
ui <- fluidPage(
actionButton("button_Aa", "Update Aa"),
actionButton("button_Ab", "Update Ab"),
p('A'),
verbatimTextOutput("text_A"),
p('Aa'),
verbatimTextOutput("text_Aa"),
p('Ab'),
verbatimTextOutput("text_Ab")
)
server <- function(input, output, session) {
rv <- reactiveValues(A = list(a = 1, b = 1))
observeEvent(input$button_Aa, {
rv$A$a <- rv$A$a + 1
})
observeEvent(input$button_Ab, {
rv$A$b <- rv$A$b + 1
})
output$text_A <- renderPrint({
rv$A
rnorm(1)
})
output$text_Aa <- renderPrint({
rv$A$a
rnorm(1)
})
output$text_Ab <- renderPrint({
rv$A$b
rnorm(1)
})
}
shinyApp(ui, server)