2017-10-18 2 views
2

Par exemple, je pourrais simplement ajouter une instruction d'impression au début de mon réactif d'intérêt pour découvrir à chaque fois ce que d'autres réactifs l'ont déclenché?Dans un réactif donné, existe-t-il une méthode/option pour obtenir le (s) élément (s) réactif (s) qui l'a déclenché?

reactive_example <— reactive({ 
    print(last_trigger()) 
    reactive_statement() 
    _#Rest of reactive logic..._ 
    )} 

Ensuite, par exemple, je verrais dans mon journal:

"last_trigger de reactive_example: reactive_statement"

Ce qui voudrait dire que dans ce cas particulier, il est reactive_statement() qui a déclenché reactive_example() à réexécuter.

+0

Jetez un oeil à ce trop https://stackoverflow.com/questions/26915964/retrieving-reactive-dependencies-as-inferred-by-shinyreactive –

+0

@PorkChop Je ne vois pas comment cela pourrait être un doublon :) Votre message lié comme votre réponse touche uniquement les entrées, alors que ma question est vraiment après d'autres déclarations réactives ... donc hélas ce n'est pas un doublon. Mais merci pour l'aide. – Ploulack

+1

Est-ce que cela aide? https://github.com/rstudio/shiny/issues/1846 –

Répondre

2

Vous pouvez faire quelque chose comme ceci:

Pour surveiller tous les réactifs:

library(shiny) 

ui <- fluidPage(
    mainPanel(column(3, 
        sliderInput("one","one",min = 0,max = 5,step = 1,value = 1), 
        sliderInput("two","two",min = 0,max = 5,step = 1,value = 1), 
        verbatimTextOutput("x")) 
) 
) 

server <- function(input,output,session){ 

    v <- reactiveValues(last = NULL) 

    observe({ 
    lapply(names(input), function(x) { 
     observe({ 
     input[[x]] 
     v$last <- x 
     }) 
    }) 
    }) 

    output$x <- renderPrint({paste0("Last Value changed is: ", v$last)}) 
} 
shinyApp(ui, server) 

enter image description here

Pour surveiller les réactifs qui vous intéressent: Ci-dessous nous voulons seulement pour voir les changements dans les curseurs "un" et "deux" qui peuvent faire partie de certains réactifs comme reactive_example()

observe({ 
    lapply(c("one","two"), function(x) { 
     observe({ 
     input[[x]] 
     v$last <- x 
     }) 
    }) 
    }) 
+0

Merci. astuce utile. Mais les entrées sont 'faciles' quand vous déboguez, ce que je cherche c'est quels autres ** réactifs ** ont déclenché le réactif d'intérêt. J'ai mis à jour ma question en conséquence. – Ploulack