Reactiviteit fijn afstellen

Casestudies: webapplicaties bouwen met Shiny in R

Dean Attali

Shiny Consultant

Reactiviteit: herhaling

  • reactive() en input$ zijn reactief
  • Code die afhangt van reactieven draait opnieuw bij updates
  • Toegang tot een reactieve waarde maakt het een dependency
x <- reactive({
    y() * input$num1 * input$num2
})
Casestudies: webapplicaties bouwen met Shiny in R

Isolate

  • Gebruik isolate() om geen reactieve dependency te maken
  • Als een reactieve waarde in isolate() wijzigt, gebeurt er niets
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Casestudies: webapplicaties bouwen met Shiny in R

Alles isoleren

  • Soms wil je alle reactieven isoleren

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Je hebt een manier nodig om x op aanvraag te herstarten

Casestudies: webapplicaties bouwen met Shiny in R

Actieknoppen

actionButton(inputId, label, ...)

Alt-tekst hoofdstuk4_4_reactiviteit_fijn_afstellen.025

  • Slechts één simpele interactie: klik
  • Waarde is het aantal keer geklikt
# Na twee keer op de knop klikken
str(input$button)
int 2
Casestudies: webapplicaties bouwen met Shiny in R

Actieknoppen als triggers voor reactiviteit

  • Toegang tot de knopwaarde in server triggert reactiviteit

  • Voeg de knop toe aan de UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Maak de knop een dependency

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Casestudies: webapplicaties bouwen met Shiny in R

Laten we oefenen!

Casestudies: webapplicaties bouwen met Shiny in R

Preparing Video For Download...