Finjustera reaktiviteten

Fallstudier: Bygg webbapplikationer med Shiny i R

Dean Attali

Shiny Consultant

Repetition av reaktivitet

  • reactive() och input$ är reaktiva
  • Kod som beror på reaktiva variabler körs om när beroenden uppdateras
  • Att läsa ett reaktivt värde gör det till ett beroende
x <- reactive({
    y() * input$num1 * input$num2
})
Fallstudier: Bygg webbapplikationer med Shiny i R

Isolera

  • Använd isolate() för att undvika reaktivt beroende
  • Om ett reaktivt värde inuti isolate() ändras händer ingenting
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Fallstudier: Bygg webbapplikationer med Shiny i R

Isolera allt

  • Ibland vill du isolera alla reaktiva uttryck

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Du behöver ett sätt att utlösa att x körs om vid behov

Fallstudier: Bygg webbapplikationer med Shiny i R

Åtgärdsknappar

actionButton(inputId, label, ...)

chapter4_4_fine_tune_the_activity.025.png

  • Bara en enkel interaktion: klick
  • Knappens värde är antalet gånger den klickats
# After clicking on a button twice
str(input$button)
int 2
Fallstudier: Bygg webbapplikationer med Shiny i R

Åtgärdsknappar som reaktivitetsutlösare

  • Att läsa knappens indatavärde i servern utlöser reaktivitet

  • Lägg till knappen i UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Läs knappens värde för att göra den till ett beroende

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Fallstudier: Bygg webbapplikationer med Shiny i R

Nu kör vi en övning!

Fallstudier: Bygg webbapplikationer med Shiny i R

Preparing Video For Download...