Reglarea fină a reactivității

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Dean Attali

Shiny Consultant

Recapitulare reactivitate

  • reactive() și input$ sunt reactive
  • Codul care depinde de variabile reactive se reexecută când dependențele se actualizează
  • Accesarea unei valori reactive o face dependență
x <- reactive({
    y() * input$num1 * input$num2
})
Studii de caz: Construirea aplicațiilor web cu Shiny în R

Izolare

  • Utilizați isolate() pentru a evita crearea unei dependențe reactive
  • Dacă valoarea reactivă din interiorul isolate() este modificată, nu se întâmplă nimic
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Studii de caz: Construirea aplicațiilor web cu Shiny în R

Izolarea completă

  • Uneori doriți să izolați toate elementele reactive

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Este necesară o metodă de a declanșa reexecutarea lui x la cerere

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Butoane de acțiune

actionButton(inputId, label, ...)

Exemplu de buton de acțiune

  • O singură interacțiune simplă: clic
  • Valoarea butonului reprezintă numărul de clicuri
# After clicking on a button twice
str(input$button)
int 2
Studii de caz: Construirea aplicațiilor web cu Shiny în R

Butoane de acțiune ca declanșatoare de reactivitate

  • Accesarea valorii butonului în server declanșează reactivitatea

  • Adăugați butonul în UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Accesați butonul pentru a-l face dependență

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Studii de caz: Construirea aplicațiilor web cu Shiny în R

Să exersăm!

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Preparing Video For Download...