Допустим, у меня есть следующее тестовое приложение ниже. То, что я ищу, - это как воспроизвести функциональность решения reactiveValues
. Если вы поиграете с приложением, вы заметите одно отличие в том, как isolate
влияет на функциональность. С реактивными значениями я могу выбрать элементы в реактивном списке для изоляции.
Поэтому, если пользователь нажимает кнопку 1, время всегда будет меняться. Так что время всегда будет печататься в наблюдении. Если пользователь нажимает ту же кнопку, поскольку data
не меняется, отображается только время. Если вы переключаете щелчки между кнопками, будет отображаться как имя кнопки, так и время.
Похоже, что вы не можете повторить эту функцию, используя reactive
. Моя проблема связана с реальным сценарием, который я использую reactivePoll
. Мой response.Poll возвращает список myData
скажем. Что я хочу сделать, так это иметь возможность isolate
только тогда, когда myData$firstel
изменится. Но похоже, что любая реактивная парадигма, которая обновляется с myData
, будет обновляться независимо от того, изменяется myData$firstel
или myData$secondel
. Есть ли способ решить это? Я попытался преобразовать свой реактивный_полл в реактивные значения, но он не работает
library(shiny)
ui <- fluidPage(
actionButton("button1","Button 1"),
actionButton("button2","Button 2"),
textOutput("output1"),
textOutput("output2")
)
server <- function(input,output,session){
myreactval <- reactiveValues(data = NULL, selection = NULL)
observeEvent(input$button1,{
myreactval$data <- Sys.time()
myreactval$selection <- "button1"
})
observeEvent(input$button2,{
myreactval$data <- Sys.time()
myreactval$selection <- "button2"
})
myreact <- eventReactive(input$button1,{
res <- list()
res$data <- Sys.time()
res$selection <- "button1"
return(res)
})
output$output1 <- renderText({ myreact()$data })
output$output2 <- renderText({ myreact()$selection })
# REACTIVE SOLUTION
# observe({
# print(myreact()$selection)
# })
# observe({
# print(isolate(myreact())$data)
# })
# REACTIVE VALUES SOLUTION
observe({
print(myreactval$selection)
})
observe({
print(isolate(myreactval)$data)
})
}
shinyApp(ui,server)