наблюдатьEvent, не реагирующий на изменения в reactiveValues

avatar
Nikhil Pathiyil
9 августа 2021 в 06:30
68
0
1

Я пытаюсь заставить наблюдаемое событие реагировать на изменения в объекте reactiveValues. Здесь reactiveValues ​​"test_vals" содержит значения двух числовых входных данных, показанных ниже.

Ожидаемое поведение:ObservEvent(test_vals,...) должен выполняться всякий раз, когда происходит изменение любого из двух числовых входов, а "test_vals изменен" должен выводиться на консоль.

Реальное поведение: вообще не выполняется.

Репрекс ниже.

library(shiny)

ui <- fluidPage(
  numericInput("x", "x", 5),
  numericInput("y", "y", 10)
)

server <- function(input, output, session) {
 
  test_vals <- reactiveValues(
    x = reactive(input$x),
    y = reactive(input$y)
  )
 
  observeEvent(test_vals, {
   
    print("test_vals changed")
  })
 
}

shinyApp(ui, server)
Источник
MrFlick
9 августа 2021 в 06:34
2

Вам действительно нужен reactiveValues? Можете ли вы просто использовать observeEvent(c(input$x, input$y), {print("test_vals changed")})?

Nikhil Pathiyil
9 августа 2021 в 08:36
1

@MrFlick В этом примере я, вероятно, нет, но представьте, что у меня было 30 таких входных данных и несколько наблюдаемых событий (это как раз в случае с приложением, которое я создаю). Что бы я сделал в таком случае? Было бы непрактично писать так, как вы упомянули тогда. Спасибо за ответ кстати.

Nikhil Pathiyil
9 августа 2021 в 08:40
1

@MrFlick Кроме того, если observeEvent находится в другом модуле, то я думаю, что единственный способ справиться с этим - сохранить входные данные в reactiveValues, а затем вернуть их из модуля. Вы знаете, как поступить в таком случае?

Canned Man
9 августа 2021 в 10:01
0

Добро пожаловать. Пожалуйста, постарайтесь включить приведенные выше наблюдения в свой вопрос, а затем в конце четко сформулируйте, чего вы хотите достичь и как.

Ответы (0)