Ajuster finement la réactivité

Études de cas : créer des applications Web avec Shiny en R

Dean Attali

Shiny Consultant

Rappel sur la réactivité

  • reactive() et input$ sont réactifs
  • Le code qui dépend de variables réactives se réexécute quand les dépendances changent
  • Accéder à une valeur réactive en fait une dépendance
x <- reactive({
    y() * input$num1 * input$num2
})
Études de cas : créer des applications Web avec Shiny en R

Isolate

  • Utilisez isolate() pour ne pas créer de dépendance réactive
  • Si une valeur réactive à l'intérieur de isolate() est modifiée, rien ne se passe
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Études de cas : créer des applications Web avec Shiny en R

Tout isoler

  • Parfois, vous voulez isoler tous les réactifs

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Il faut un moyen de relancer x sur demande

Études de cas : créer des applications Web avec Shiny en R

Boutons d'action

actionButton(inputId, label, ...)

Bouton d'action

  • Une seule interaction simple : cliquer
  • La valeur du bouton est le nombre de clics
# Après avoir cliqué deux fois sur un bouton
str(input$button)
int 2
Études de cas : créer des applications Web avec Shiny en R

Boutons d'action comme déclencheurs

  • Accéder à la valeur d'un bouton côté serveur déclenche la réactivité

  • Ajouter le bouton à l'interface

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Accéder au bouton pour en faire une dépendance

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Études de cas : créer des applications Web avec Shiny en R

Passons à la pratique !

Études de cas : créer des applications Web avec Shiny en R

Preparing Video For Download...